仅仅作为记录,自己学到过什么知识
编译原理总体框架图
构造最简DFA:1、构造NFA 2、构造DFA 3、化简DFA
LL(1):1、消除左递归 2、找到FIRST集和FOLLOW集 3、画分析表
LR(0),SLR:1、找到目标集 2、画出框图I0 3、画表格s1 \r1 \1
翻译:1、MNES,一个词一个词地取出,对应写几句话 2、画四元式表格 3、遗留问题:表格中还含有0,根据下一条语句来决定0处填写的内容
DAG: 画图的方法类似于霍夫曼树,左右顺序不可颠倒
1、化简:从上往下找到最低一层,把表达式写出来
2、排序:从上往下,先找左边节点,如果节点父节点都在集合中,则放入,如果不是,则找上一层的右结点,直至所有节点都放入,则排序完成,此排序为逆序
之后要想写出目标代码,需要把这个逆序变为正序,然后依次写即可
死代码:计算的结果不被引用的语句
循环优化:1、代码外提:将循环不变语句提到循环的前置节点中,并不是所有的循环不变语句都可以外提
2、归纳变量删除
3、强度削弱