编译原理简答题
- 格式:doc
- 大小:215.50 KB
- 文档页数:5
第二章
●词法记号:是由记号名和属性值构成的二元组,属性值有时不必要。记号名是代表一类
词法单元的抽象名字。
●模式:记号的模式描述属于该记号的词法单元的形式。在一个关键字作为一个记号的情
况下,它的模式就是构成该关键字的字符序列。
●词法单元:又称单词,是源程序中匹配一个记号模式的字符序列,它由词法分析器标识
该记号的实例。
●正规表达式是按照一组定义规则,由简单的正规式构成的,每个正规式r表示一个语言
L(r)。这些定义规则说明L(r)是怎样从r的正规式所表示的语言中构造出来的
第三章
●一个上下文无关文法(Context-Free Grammar) G是一个四元组(VT,VN,S,P),
其中
VT是一个非空有限集,它的每个元素称为终结符号;
VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=φ;
S是一个非终结符号,称为开始符号;
ρ是一个产生式集合(有限),每个产生式的形式是P→α,其中,P∈VN,α∈(VT∪VN)* 。开始符号S至少必须在某个产生式的左部出现一次。
●文法的优点
接收词法分析器提供的记号串
检查记号串是否能由源程序语言的文法产生
用易于理解的方式提示语法错误信息,并能从常见的错误中恢复过来
●LR分析方法的特点
栈中的文法符号总是形成一个活前缀
分析表的转移函数本质上是识别活前缀的DFA
栈顶的状态符号包含了确定句柄所需要的一切信息
是已知的最一般的无回溯的移进--归约方法
能分析的文法类是预测分析法能分析的文法类的真超集
第四章
●语法制导的定义是对上下文无关文法的推广,其中每个文法符号都有一个相关的属性
集。
属性分为综合属性(synthesized attribute)和继承属性(inherited attribute)
●L-属性定义:一个语法制导定义,如果对于每个产生式A X1X2...Xn,其每个语义规
则中的每个属性或者是综合属性,或者是Xj(1 j n)的一个继承属性且这个继承属性仅依赖于:
(1) 产生式Xj的左边符号X1,X2,...Xj-1的属性
(2) A的继承属性
●翻译方案:和文法符号相关的属性和语义规则,用花括号{}括起来,插入到产生式的合
适位置上。
●构造翻译方案的规则
如果语义规则中只有综合属性
为每个语义规则建立一个包含赋值的动作,并把这个动作放在相应产生式右边的末尾
如果语义规则中既有综合属性又有继承属性
产生式右边的符号的继承属性必须在这个符号以前的动作中计算出来
一个动作不能引用这个动作右边的符号的综合属性
产生式左边非终结符的综合属性只有在它所引用的所有属性都计算出来以后才能计算。计算这种属性的动作通常可放在产生式右端的末尾
第六章
●设计原则
调用者和被调用者之间交流的数据一般放在被调用者活动记录的开始处,并尽可能靠近调用者的活动记录
固定长度的项通常放在活动记录的中间,一般包括控制链、访问链和机器状态域
在编译时不能及时知道大小的一些项放在活动记录的末端
●参数传递:
左值:表达式所表示的存储单元
右值:这个存储单元中所存的值
实参的正文本身
值调用:值调用的显著特征是对形参的运算不影响调用者活动记录中的值
引用调用:当参数通过引用(也叫做地址调用或传位置调用)传递时,调用过程把实参存储单元的地址传递给被调用过程:
如果实参是有左值的名字或表达式,则传递这个左值本身
如果实参是a+b或2这样的表达式,它没有左值,则计算该表达式的值并存储新的存储单元,然后传递这个单元的地址
换名调用:过程被看作宏;也就是说,在调用过程中将调用替换为被调用过程的过程体,但要把任何一个出现的形式参数都文字地替换为相应的实在参数(宏扩展)
被调用过程中的局部名字要保持与调用过程中的名字不同,因此可以考虑在进行宏扩展以前,将被调用过程中的每一个名字都系统地给以重新命名
如果需要保持实参的完整性,可以把实参用圆括号括起来
第七章
●采用中间语言的优点:
重置目标(retargeting)比较容易
可以在中间表示上应用与机器无关的代码优化器
●中间语言:
后缀式
图形表示法:语法树、DAG图表示
三地址代码:三元式、四元式、间接三元式
静态单赋值形式
第八章
●目标程序
可执行目标模块
可重定位目标模块
允许程序模块分别编译
调用其它先前编译好的程序模块
汇编语言程序
免去编译器重复汇编器的工作
从教学角度,增加可读性
第九章
●优化种类:删除公共子表达式、复写传播、删除死代码、代码外提、强度削弱和归纳变
量删除