补充:概念和名词说明
名字、标识符、变量
标识符(identifier)是一个字符串,它用来标记(指向)一个实体(对象、类型、过程)。所有的标识符都是名字,但不是所有的名字都是标识符。名字也可以是一个表达式,例如x.y
表示x
所指结构中的一个字段y
。x
和y
都是标识符,而x.y
是一个名字,这种复合名字称为受限名称(qualified name)。
变量指向存储中某个位置。同一个标识符可以被多次声明,对同一个标识符的声明可以引入不同的新变量。
过程、函数、方法
过程是一个可以被调用的子程序。
但是当明确地讨论某个语言时候,使用函数(C)或方法(C#/Java)。
声明和定义
声明告诉我们事物的类型。而定义告诉我们它们的值。
因此int i;
是一个声明,而i = 1;
是i
的一个定义(定值)。
词法单元和终结符
词法单元由两个部分组成:名字和属性值。词法单元的名字是语法分析器进行语法分析时使用的抽象符号。我们常常把这些词法单元名字称为终结符号。
讨论语法分析时,通常可以将词法单元和终结符当作同义词。
语法制导翻译和翻译方案
ZhiHu:在做语法分析的同时,直接进行了语义翻译,这个过程称为语法制导翻译。
Baike:语法制导翻译的根本上是在一个上下文无关文法中通过向结果中添加动作(action)来工作的,从而形成语法制导定义(Syntax-Directed Definition)。动作是指,一个结果在推导过程中被使用的时候,将要被执行的步骤或过程。 一个嵌入了将要执行的动作的语法规则,称为一个语法制导翻译方案(有时简称为“翻译方案”)。
龙书:翻译方案是一种将程序片段附加到一个文法各个产生式上的表示法。当语法分析过程使用一个产生式时,相应的程序片段就会执行。这些程序片段的执行结果按照语法分析过程的顺序结合起来,得到的结果就是这次分析/综合过程处理源程序得到的翻译结果。
(ToBeContinue)