编译
一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的烦琐细
节,使程序员和程序设计专家独立于机器
词法分析程序的生成系统 LEX ,语法分析程序的生成系统 YACC
词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码
词法分析:这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符目标程序 流进行扫描和分解,从而识别出一个个单词。
语法分析:在词法分析的基础上将单词序列分解成各类语法短语(语法单位)
语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息
中间代码生成:将源程序变成一种内部表示形式(一是容易生成;二是容易将它翻译成目标代码)
代码优化:使生成的目标代码更为高效
目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码
一般还会有表格管理程序和出错处理程序辅助。

上下文:当前符号前后的符号




都是最左推倒,但是树不同,则是二义的。





短语就是在这个上下文中能够规约的一个字符串



即在中间路上

有没有空这个符号不影响文法的属性




非终结符后跟的所有可能终结符或者无(#)


如果不会推出空,那么选择它是因为输入了最终推导出的首终结符
如果会推出空,那么还有可能就是输入了跟在它后面的首终结符


代换后再提取










找到直接推导出a的,然后找出所有间接推导出a的
编译
https://lhish.github.io/project/编译/