编译技术复习

第二章 一个简单的语法指导翻译器

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 语法制导翻译

  • 属性:与某个程序构造相关的任意的量。比如数据类型等。
  • 翻译方案:是一种将程序片段附加到一个文法的各个产生式上的表示方法。