`
touchmm
  • 浏览: 1046865 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[转载] 语法和语义

阅读更多

转自steve的blog

其实说得也很简单,转载以备忘。
更详细的可以去看Keith Short的这本书:Adapted from Models, Frameworks and Tools,网上有下载。

Graphical languages – semantics vs syntax

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.

分享到:
评论

相关推荐

    λ演算的语法和语义.zip

    《λ演算的语法和语义》是由荷兰学者H.P.巴伦德莱赫特编写的教材,专注于探讨计算理论中的核心概念——λ演算。λ演算是函数式编程的基础,也是理论计算机科学中极其重要的一部分。这本书深入浅出地阐述了λ演算的...

    词法,语法,语义分析源程序

    在编程语言的世界里,词法、语法和语义分析是构建编译器或解释器时不可或缺的步骤。这些概念构成了编译原理的核心,是将人类可读的源代码转化为计算机可执行指令的基础。下面,我们将深入探讨这三个关键知识点。 1....

    vscode中的语法高亮和语义高亮(Syntax Highlight and Semantic Highlight)

    除了语法和语义高亮,VSCode 还提供了全局的颜色配置选项,用于调整编辑器的整体色调、背景色、边框颜色等。这些设置位于 `workbench.colorCustomizations` 中,用户可以根据个人喜好和视觉需求进行调整。 总之,...

    自然语言理解中的语法学 语义学 和语用学

    自然语言理解中的语法学、语义学和语用学 自然语言理解是人工智能的早期和活跃的研究领域之一,用自然语言进行高级通信,是人类固有的本领。本文讨论自然语言理解的一些基本概念,然后分三个部分分别讲自然语言理解...

    计算机编译原理——语法和语义分析实验

    在这个“语法和语义分析实验”中,我们将探讨编译器构造的关键组成部分,主要包括词法分析、语法分析和语义分析。 **词法分析**是编译过程的第一步,它将源代码分解成一系列有意义的单元,称为标记(tokens)。这些...

    ChatGPT技术对于对话生成中的语法和语义纠错能力.docx

    ChatGPT 技术对于对话生成中的语法和语义纠错能力 ChatGPT 技术作为一种基于深度学习的对话生成模型,具备自动纠正语法和语义错误的潜力。本文将探讨 ChatGPT 技术在对话生成中的语法和语义纠错能力,并分析其在...

    编译原理实验 词法、语法、语义分析

    本实验项目专注于三个核心概念:词法分析、语法分析和语义分析,这些都是编译器设计的关键步骤。以下是这三个阶段的详细说明,以及在C语言环境下使用CodeBlock进行开发的相关内容。 一、词法分析 词法分析是编译器...

    编译原理——词法、语法、语义

    在提供的文件列表中,“www.pudn.com.txt”可能包含有关编译原理的资料链接或讨论,而“cifa-yufa-yuyi”可能是关于词法、语法和语义的进一步说明或示例代码。通过阅读和分析这些文件,可以深化对编译原理的理解,并...

    二---十进制的语法分析及语义分析程序设计(LR)

    总的来说,二进制到十进制或十进制到二进制的转换是计算机科学的基础知识,而使用LR分析法进行语法和语义分析则是编译器设计的关键技术。通过深入学习和实践,我们可以更好地理解和构建编译器,从而高效地处理各种...

    程序语言的语法和语义,一种基于实验室的方法Syntax and Semantics of Programming Languages, A Laboratory Based Approach

    在《程序语言的语法和语义:一种基于实验室的方法》这本书中,作者通过结合理论与实践的方式,系统地介绍了程序设计语言的基本概念、语法结构以及形式语义等内容。本书不仅适用于计算机科学专业的本科生,同时也适合...

    《编译原理课程设计》-布尔表达式的语法分析及语义分析程序设计

    通过这次课程设计,学生不仅会掌握编译器的基本原理,还将锻炼到实际编程技能,包括使用编程语言实现解析器和语义分析器,以及处理实际代码中的错误和异常情况。这对于理解和改进现有的编译器,或是开发新的编程语言...

    编译原理-词法,语法,语义

    这个过程分为几个关键阶段,包括词法分析、语法分析和语义分析,它们共同构成了编译器的核心部分。 **词法分析(Lexical Analysis)** 词法分析是编译过程的第一步,它将源代码分解成一系列的词法单元,也称为...

    编译原理词法分析,语法分析,语义分析(源代码和实验报告)

    这个过程通常包括三个主要阶段:词法分析、语法分析和语义分析。 词法分析,也称为扫描,是编译器的第一步。它将源代码分解成一系列的最小可识别单位,称为“词法单元”或“标记”。这些词法单元可以是关键字、...

    ChatGPT技术对话生成中的语法和语义校正策略.docx

    ChatGPT 技术对话生成中的语法和语义校正策略 一、ChatGPT 技术概述 ChatGPT 是基于 Transformer 模型的生成对话系统,由 OpenAI 开发,基于大规模的文本语料库进行训练,并利用 Transformer 模型生成自然语言输出...

    编译原理词法、语法、语义、四元式源代码

    它涉及到将高级语言转换为机器可执行代码的过程,主要包括词法分析、语法分析、语义分析和代码生成四个阶段。这里,我们讨论的“编译原理词法、语法、语义、四元式源代码”是昆明学院陈老师课程的实验资源,旨在帮助...

    编译原理实验报告 语法分析 语义分析 词法分析 详细的源程序

    通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法. 实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 实验的...

    语法语义处理源代码

    Java语言子集语法、语义分析器 1.强化对系统软件综合工程实现能力、规划能力的训练; 2.增强对语法分析器、语义分析及代码生成器基本实现技术的理解; 3. 提高训练。

    JSP的语法和语义

    ### JSP的语法和语义 #### 一、概述 JSP(JavaServer Pages)是一种由Sun Microsystems开发的标准,用于创建动态网页的技术。它结合了HTML、XML与Java技术,使得开发者能够在传统的静态HTML页面中嵌入动态内容。...

    编译原理实验报告,词法分析,语法分析,语义分析。

    这份实验报告涵盖了编译器设计中的三个关键阶段:词法分析、语法分析和语义分析,这些都是将高级语言转化为机器语言不可或缺的部分。 1. **词法分析**(Lexical Analysis): 词法分析是编译过程的第一步,它将源...

Global site tag (gtag.js) - Google Analytics