语法、语义与实用主义:编程中的关键概念解析
1. 解析过程概述
编译器解析源代码通常会经过多个步骤,其中词法分析和句法分析是两个重要环节。
1.1 词法分析
直接将语法规则应用于单个字符往往过于繁琐,因此可以添加一个名为词法分析的预过程。在这个过程中,原始文本首先会被转换为一系列词法单元(也称为标记)。每个标记都可以用正则表达式来描述,并从字符流中提取出来。例如,数字可以用正则表达式 [0 - 9]+ 来描述,标识符可以用 [a-zA-Z_][0 - 9a-zA-Z_]* 来描述。经过这样的处理后,文本不再是简单的字符序列,而是一个标记的链表。每个标记都会被标记上其类型,对于解析器来说,标记类型将被映射到终结符。在这个步骤中,很容易忽略所有的格式细节(如换行符和其他空白符号)。
1.2 句法分析
在句法分析阶段,会在标记流的基础上构建一个树结构,这个结构被称为抽象语法树。每个节点对应一个语言结构。
2. 语义相关概念
语言语义是句法结构的句子与其含义之间的对应关系。每个句子通常被描述为程序抽象语法树中的一种节点类型,这种描述可以通过以下几种方式进行:
- 公理化描述 :当前程序状态可以用一组逻辑公式来描述,然后抽象机器的每一步都会以某种方式转换这些公式。
- 指称语义描述 :每个语言句子都被映射到某个理论(如域理论)的一个数学对象上,然后可以用这个理论来描述程序的效果。当推理用不同语言编写的不同程序的行为时,这种方法特别有用。
超级会员免费看
订阅专栏 解锁全文
701

被折叠的 条评论
为什么被折叠?



