[复习笔记]编译原理


第一章

以通识为主,不作重点整理

第二章 文法和语言

1. 各型文法判断

  • 按照从复杂到简单的顺序进行判断(3型→2型→1型→0型)
  • 重点掌握2、3型文法判断,其他不做要求
  • 3型文法(正规文法)要求:

    1. 左边有且仅有一个非终结符
    2. 其右边最多只能有两个字符,且当有两个字符时必须有一个为终结符而另一个为非终结符。当右边只有一个字>符时,此字符必须为终结符
    3. 对于3型文法中所有右边有两个字符的产生式,右边两个字符中终结符和非终结符的相对位置一定要固定,要么都是:终结符+非终结符,要么都是:非终结符+终结符
  • 2型文法(上下文无关文法)要求:

    1. 左边有且仅有一个非终结符
    2. 2型文法所有产生式的右边可以含有若干个终结符和非终结符(只要是有限的就行,没有个数限制)
  • 1型文法要求:

    1. 1型文法所有产生式左边可以含有一个、两个或两个以上的字符,但其中必须至少有一个非终结符。
    2. 与2型文法第二点相同。
  • 0型文法要求:
    不满足以上三类的文法都是0型文法

2. 语法树,短语及二义性判断

  • 判断短语前,先画语法树
    [复习笔记]编译原理
  • 短语:一个句型的语法树中任一子树叶节点所组成的符号串都是该句型的短语
    上图中短语有:a / S / (a) / S,(a) / (S,(a))

  • 直接短语(简单短语):当子树不包含其他更小的子树时,该子树叶节点所组成的字符串就是该句型的直接短语
    上图中直接短语有:a / S

  • 句柄:句柄是最左边的直接短语
    上图中句柄为:S

  • 素短语::不包含且不能推导出其他短语的短语为素短语
    上图中素短语为:a

  • 二义性文法:如果一个文法能画出两颗不同的语法树,则该文法是二义性文法

第三章 词法分析

1. 正规式到正规集

  1. L()={}
  2. L(ε)={ε}
  3. L(e1|e2)=L(e1)L(e2)
  4. L(e1e2)=L(e1)L(e2)
  5. L(e1)=L(e1)
    例1:
    L((a|b))=L(a|b)={a,b}={ε,a,b,aa,bb,ab,ba...}

    例2例3

2. 从正规文法到正规式

规则 正规文法 正规式
规则1 A→xB, B→y A=xy
规则2 AxA|y A=xy
规则3 A→x, A→y A=x|y

3. 从正规式到NFA

规则:
[复习笔记]编译原理

例题:
[复习笔记]编译原理

4. 从NFA到DFA(子集构造法)

规则:
[复习笔记]编译原理

例题:
[复习笔记]编译原理
[复习笔记]编译原理
[复习笔记]编译原理

5. 最小化DFA(分割法)