转自steve的blog。
其实说得也很简单,转载以备忘。
更详细的可以去看Keith Short的这本书:Adapted from Models, Frameworks and Tools,网上有下载。
Recent postings have talked about “semantics” of graphical languages. When I was involved in UML development this word caused a lot of argument and confusion. In my view, it goes like this.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
A graphical language has three primary aspects: concrete syntax, abstract syntax, and semantics. Concrete syntax (notation) defines what the language actually looks like on the screen or the paper: the shapes, connections, adornments and textual annotations that the user sees and manipulates, and the gestures used to manipulate them. Abstract syntax (grammar) gives names to the concepts that the notation depicts, and defines which configurations of these are valid. Often, the abstract syntax for a graphical language is defined using a model, itself expressed using a graphical language. Some people call this a “metamodel”; my colleagues and I usually call it a domain model. Usually such a model is insufficient on its own, and must be supplemented by an additional set of constraints, sometimes called “well-formedness rules”. A typical such rule would be the constraint that an inheritance graph must not form cycles.
Semantics is none of the above, although terms such as “static semantics” or “short-range semantics” have been used to refer to what I called abstract syntax. Semantics define what valid expressions in the language mean. (Aside: saying “expressions in the language” is very easy when talking about textual languages, whereas thinking of a diagram as an expression may feel a little uncomfortable. You have to get used to it.) The way to give meaning to an expression is to map it to one or more other interesting structures whose meaning is known. To define semantics objectively, the mapping and the meaning of the result must both be precisely defined.
A mapping of the graphical language to statements in a natural language does not give objective semantics, although it may be useful. A precise mapping of the graphical language to a programming language gives objective semantics to the extent that the programming language does: which is high, in the case of popular standardized languages. If such a mapping exists it probably means that the diagram is a visualization of some aspect of the structure of the program. Another useful target for semantic mappings is expressions in some logical formalism, such as set theory, predicate logic or abstract algebra. Examples of diagrams with this kind of semantics are Venn diagrams and Petri nets. A final useful target for semantic mappings is another graphical language, which itself has well-defined semantics.
You might observe that abstract syntax involves a mapping from expressions in the language to the structure {valid, invalid}, and therefore is a kind of degenerate semantics. I prefer to distinguish validity from meaning. You might also observe that it might be desirable to give some kind of meaning to invalid expressions. To do that, you’d have to introduce different kinds of validity.
分享到:
相关推荐
在编程语言的世界里,词法、语法和语义分析是构建编译器或解释器时不可或缺的步骤。这些概念构成了编译原理的核心,是将人类可读的源代码转化为计算机可执行指令的基础。下面,我们将深入探讨这三个关键知识点。 1....
自然语言理解中的语法学、语义学和语用学 自然语言理解是人工智能的早期和活跃的研究领域之一,用自然语言进行高级通信,是人类固有的本领。本文讨论自然语言理解的一些基本概念,然后分三个部分分别讲自然语言理解...
词法分析、语法分析和语义分析是编译器设计中的三个关键步骤,它们共同将高级语言源代码转换为机器可执行的指令。在本文中,我们将深入探讨这三种分析方法,并结合C语言实现的四元式生成,来理解它们在编程语言处理...
在实际应用中,词法、语法和语义分析器的设计和实现是复杂而细致的工作,需要对编程语言理论有深入的理解。李盼2009119030同学的这个项目无疑是一个很好的实践机会,可以帮助他/她深入理解编译器内部的工作原理,...
在这个“语法和语义分析实验”中,我们将探讨编译器构造的关键组成部分,主要包括词法分析、语法分析和语义分析。 **词法分析**是编译过程的第一步,它将源代码分解成一系列有意义的单元,称为标记(tokens)。这些...
ChatGPT 技术对于对话生成中的语法和语义纠错能力 ChatGPT 技术作为一种基于深度学习的对话生成模型,具备自动纠正语法和语义错误的潜力。本文将探讨 ChatGPT 技术在对话生成中的语法和语义纠错能力,并分析其在...
在提供的文件列表中,“www.pudn.com.txt”可能包含有关编译原理的资料链接或讨论,而“cifa-yufa-yuyi”可能是关于词法、语法和语义的进一步说明或示例代码。通过阅读和分析这些文件,可以深化对编译原理的理解,并...
在《程序语言的语法和语义:一种基于实验室的方法》这本书中,作者通过结合理论与实践的方式,系统地介绍了程序设计语言的基本概念、语法结构以及形式语义等内容。本书不仅适用于计算机科学专业的本科生,同时也适合...
这个过程分为几个关键阶段,包括词法分析、语法分析和语义分析,它们共同构成了编译器的核心部分。 **词法分析(Lexical Analysis)** 词法分析是编译过程的第一步,它将源代码分解成一系列的词法单元,也称为...
ChatGPT 技术对话生成中的语法和语义校正策略 一、ChatGPT 技术概述 ChatGPT 是基于 Transformer 模型的生成对话系统,由 OpenAI 开发,基于大规模的文本语料库进行训练,并利用 Transformer 模型生成自然语言输出...
通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法. 实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 实验的...
本项目聚焦于“简单语言编译器”,特别强调了语法和语义分析这两个核心环节,使用了Visual C++作为开发环境。这里我们将深入探讨这两个概念以及它们在编译器设计中的作用。 **语法分析** 语法分析是编译器的第一步...
自己在做编译课设时搜集参考用的,呵呵,都放上来了,有各种语法写的,LL(1),LR的,递归下降的,还有语义分析部分,有四元式,逆波兰式等等,而且每个都能调试运行。(不好的,我可不拿出来现眼)……
BITMiniCC-Parser-master 是一个专门用于理解和解析BITMiniCC(一种微型C编译器)的项目,其中包含了实现预处理、词法分析、语法分析、语义分析以及中间代码生成等关键步骤的源代码。这个项目对于学习编译原理和理解...
7. **错误处理**:在语法和语义分析中,错误处理是必不可少的。当输入的源代码不符合文法或语义规则时,编译器需要能够检测并报告错误,以便程序员修复。 综合以上内容,语法与语义分析是编译器设计的关键组成部分...
综上所述,编译原理中的词法分析、语法分析和语义分析是编译器设计中的核心环节,它们共同构成了一个完整的编译流程。通过对这些阶段的深入理解,可以更好地掌握编译技术的核心概念和技术细节。
在这个课程设计中,我们将重点关注三个关键步骤:词法分析、语法分析和语义分析,这些都是编译器构建的重要组成部分。 **词法分析**是编译过程的第一步,也称为扫描或词法分解。它负责将源代码文本分解成一系列有...
实验目标是创建一个分析器,该分析器能够生成中间代码(以四元式的形式)并检测语法和语义错误。实验的具体要求包括程序启动时显示个人信息、接收用户输入的测试程序名并自动编译、输出中间代码以及识别和报告各种...
下面将详细介绍YACC及其在语法和语义分析中的作用,以及可能包含的文件内容。 YACC是由Leslie Lamport开发的,它的主要任务是处理词法分析器(如lex)生成的词法单元流,然后根据用户定义的上下文无关文法(Context...