编译原理期末复习(自用)

二 形式语言基础

语法树

短语:任意子树的树叶全体皆为短语,注意短语不能是树叶的空子树构成的

简单短语:任一简单子树的树叶全体(具有共同父亲的叶节点符号串)皆为简单短语。

句柄:一个句型的最左简单短语称为该句型的句柄。

alt text

alt text

递归文法:

alt text

alt text

文法的等价性是指他们所定义的语言是一样的。

文法化简:

alt text

alt text

alt text

alt text

alt text

alt text

alt text

三 自动机基础

alt text

alt text

alt text

自动机开始节点标加号,终止节点标减号,可以有多个开始或终止节点,也可以开始就结束。但DFA开始状态唯一、且无幺元边、状态确定。

alt text

alt text

有限自动机确定化:

alt text

幺回路上的节点是等效节点。

alt text

alt text

四 词法分析

五 语法分析

递归子程序,自顶向下法:

alt text

alt text

alt text

alt text

递归子程序法的要求为(LL1文法):

alt text

消除左递归:

alt text

alt text

alt text

alt text

LL1分析法:

alt text

alt text

LL1文法判定:

alt text

firsta为a能够推到出的句子的终极符开头,followA为从开始Z触发推到的句型A后会出现的字符是什么。

alt text

判定定理:

alt text

LL1分析器设计:

alt text

alt text

LR()分析法:

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

点指向的下一个字符为自动机上临边的字符,并且下一个状态点后移。如果点后为非终极符则展开。如果点到最后则规约或者结束。

alt text

扩展句柄,SLR1:

alt text

SLR1对冲突的状态节点进行下一个读取进来的数据进行判断。

alt text

LR1分析表:

alt text

alt text

alt text

LR1需要看每一个状态的下一个字符,只有下一个字符为follow的才进行规约,与LR0和SLR1有点区别。

alt text

alt text

alt text

简单优先分析法:

alt text

alt text

优先关系:他俩能同时出现则是平级,层数越深的字符越大。

alt text

alt text

优先表xy表示xy字符的关系,不可以反过来

alt text

算符优先文法:

alt text

alt text

六 符号表

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

七 中间代码及其翻译

alt text

alt text

alt text

alt text

alt text

alt text

gt i lb i

alt text

if t1 el ie

alt text

wh do t3 we

if需要先计算bool值,while在wh和do里计算bool值

alt text

alt text

alt text

alt text

alt text

alt text

翻译文法就是加了一个动作符号?

alt text

alt text

alt text

alt text

alt text

alt text

符号运算的动作是GEQ

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

alt text

八 优化

alt text

alt text

局部优化算法是以基本块为单位进行的,基本块也是目标代码生成的基本单位。

alt text

alt text

alt text

alt text

两个运算数为子节点,然后建立一个父节点运算符节点,同时写上结果标记。

alt text

alt text

alt text

九 目标代码及其生成

alt text

alt text

alt text

alt text

alt text

活跃信息:之后这个变量会不会被使用

alt text

活跃信息求法:首先临时变量为n,外部变量为y,之后逆序扫描每一个四元组,首先用当前符号表状态给四元组赋值,然后A更新为y,BC更新为n。

alt text

alt text

alt text

alt text

注意第一操作数只能为寄存器。

alt text

alt text

注意跳转前需要保存变量的值。