1.2.1 编译程序各阶段的工作都涉及到___。(陕西省1999年自考题)
1.2.2下列各项中,____与数组元素的地址有关。(陕西省1999年自考题)
a.数组第一个元素的存储地址
1.2.3 编译程序工作时,通常有__阶段。(陕西省1998年自考题)
1.2.4 过程调用的参数传递方式有__。
1.2.5 编译过程中所遵循的规则有____。
1.3.1 解释程序和编译程序的区别在于_。
1.3.2 编译过程通常可分为5个阶段,分别是_、语法分析、_、代码优化和目
标代码生成。(陕西省1999年自考题)
1.3.3 编译程序工作过程中,第一阶段输入是_,最后阶段的输出为一程序。
(陕西省1997年自考题)1.3.4 静态数组元素地址的计算公式由两部分确定,一部分是_,它在_时确定;
另一部分是_,它在_时确定。
1.3.5 把语法范畴翻译成中间代码所依据的是语言的_。(陕西省2000年自考题)
1.3.6 目标代码可以是_指令代码或_指令代码或绝对机器指令代码。
(陕西省2000年自考题)1.3.7 编译程序是指能将____程序翻译成____程序的程序。
1.3.8 数组元素的地址由___和___组成,其中_中的a和c在翻译数组说明语句时填入到数组的_中。
1.3.10 词法分析所遵循的是语言的______,而中间代码生成所遵循的是语言的_____。
(陕西省1997年自考题)1.3.11 数组元素的地址计算与数组的_____数及____方式有关,也与数组的类型及机器对存储器的编址方式有关。(陕西省2000年自考题)
对于输入序列,进行左推导,得到一个合法句子或者非法结构,是一种试探+回溯的方法,自上而下建立输入序列的分析树。
方法:首先,整理A产生式为如下形式:
其中αi非空,βj均不以A开始。用下述产生式代替A产生式
若αi为空,则形成一个有环的A产生式
核心思想:将不是直接左递归的符号右部展开到其他产生式
关键步骤:合理排序非终结符:A1,A2,...,An;
消除Ai产生式中的直接左递归;
方法 重复过程,直到所有A产生式候选项中不再有公共前缀:
注意:既有左递归,又含左因子,先消除左递归(左递归可以看作左因子的一部分)。
限制:文法不能有左递归和公共左因子,必须先消除。
1. 构造状态转换图并化简
3.构造递归下降子程序
每一行是一个完整的执行语句。
核心:预测分析表+驱动器(模拟算法),预测分析表的构建。
LL,符号栈,输入记号流。
关键:构造预测分析表。
通俗理解:FIRST(e)集合就是从e开始可导出的文法序列的开头终结符。Follow(e)集合就是从开始符号可导出的所有含e的文法序列中e之后的终结符。
求这两个集合的算法,需要来理解,first往后多步查看,follow复杂一点。
FIRST集合自下而上计算,FOLLOW集合自上而下计算。
1. 加入#到FOLLOW(S),其中S是开始符号,#是输入结束标记
对3的理解:因为 ε∈FIRST(β),B成为A产生式最右的文法符号,
反之不然,因为FIRST(β)不一定只有 ε。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。