编译技术复习
2018-09-25
第二章 一个简单的语法指导翻译器
2.1 引言
- 语法:描述该语言的程序的正确形式
- 语义:定义了程序的含义
- 词法单元:例如 count + 1 中的标识符 count 被当作一个单元
2.2 语法定义
一个上下文无关文法由四个元素组成:
- 一个终结符号集合, 它们有时也称为“词法单元”。终结符号是该文法所定义的语言的文本符号的集合
- 一个非终结符号集合, 它们有时也称为“语法变量”。 每个非终结符号表示一个终结符号串的集合。
- 一个产生式集合, 其中每个产生式包括一个成为 产生式头 或 左部, 一个 箭头, 一个称为 产生式体 或 右部 的由终结符号及非终结符号组成的序列
- 指定一个非终结符号为开始符号
假设数位, 符号(如 <, <=)和黑体字符串(如“while”)为终结符号, 斜体字符串为非终结符号。
例子:
list -> list + digit
list -> list - digit
list -> digit
digit->0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9运算符结合性
- 等左结合(一个数两边都有运算符的时候参与左侧运算符)
- =+ -= 等右结合
- 运算优先级:例子
term-> term factor | term / factor | factor
expr-> expr + term | expr - term | term
factor*-> digit | (expr)
2.3 语法制导翻译
- 属性:与某个程序构造相关的任意的量。比如数据类型等。
- 翻译方案:是一种将程序片段附加到一个文法的各个产生式上的表示方法。