编译原理——期末整理

1.前言

介绍编译原理,了解一个新的领域,得去了解它的整体框架

  • 词法分析
    • Thompson算法,子集构造算法(DFA,NFA),Hopcroft算法
  • 语法分析
    • LL(1),消除左递归,提取公共左因子,构造预测分析表,分析过程
    • LR(0),构造DFA,构造LR(0)分析表,进行语法分析,写出过程
    • 短语,巨型,产生式,直接短语,句柄概念
  • 语义分析(语法制导翻译)
    • 逆波兰表示法
    • if,while的逆波兰
  • 中间代码生成(生成汇编)
    • 数组、if、while的中间代码
  • 代码生成优化
    • DAG图的优化
  • 执行汇编(3地址或4地址代码的汇编执行)

2.词法分析

1.根据语言写出文法产生式

2.构造与某一正规式等价自小DFA

DFA(Deterministic Finite Automation):确定有限自动机

NFA(Non-Deterministic Finite Automation):非确定有限自动机

解题步骤:

  • 1.根据正规式画出对应状态的状态转换图
  • 2.根据状态转换图画出对应状态
  • 3.根据状态转化矩阵得到重命名的状态转换矩阵
  • 4.根据重命名状态转换矩阵得出DFA

3.DFA化简

解题步骤:

  • 1.划分初态集合和终态集合
  • 2.划分
  • 3.画出新DFA

4.总结

3.语法分析

1.消除左递归

2.LL(1)分析法

LL(1)3个条件:

1.有没有左递归
2.有没有回溯
3.first和follow集合有没有相交

image-20191225232411518

image-20191225232442227

3.根据产生式画出语法树,写出短语,直接短语,句柄

4.LR(0)分析法

4.语义分析

1.逆波兰表达式(只考算术表达式)
a+b*c+d的逆波兰为
abc*+d+

5.中间代码生成

1.数组,if语句,while的翻译

5.优化

DAG图优化

猜你喜欢

转载自www.cnblogs.com/littlepage/p/12099968.html