编译原理考前总结
稳中求快!!!
第一题——给奇偶性/对称要求,写文法
做法:1.画图 2.写话(看图写话)
注意画“开始边”
一进或一出处为全零状态
注意消除空产生式(原来的地方消掉,写出无那个终结符的情况)
第二题——给RE,最小化DFA
做法:
- RE => NFA(画图)
- NFA => DFA(求闭包,画图)
- DFA => DFA0(画树,画图)
注意画“开始边”
第三题——构造LL(1)分析表判断是否是LL(1)文法
做法:
-
G=>G’
消除左递归(直接&间接)
提取最大的公共左因子
求First&Follow
-
构造分析表
空产生式看Follow
-
观察有无冲突
第四题——构造LR(1)分析表,自己设定附加条件
做法:
-
构造LR(1)DFA
注意不要有重复状态!
-
构造LR(1)分析表
-
设定附加条件消除冲突
第五题——语法制导翻译
做法:画树
第六题——给程序画栈分布图
做法:
- 构造函数调用树
- 构造最大空间分层图
- 画细节图
第七题——给程序写三地址语句序列
一次数组访问有8条语句!
第八题——优化
做法:
- 构造DAG图
- 优化DAG图
- 构造启发式序列(最左优先)
- 写出优化后的代码序列
注意:画图的“左右”,拓扑排序