- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
州大学计算机科学与信息学院
《编译原理》期末复习
州大学计算机科学与信息学院
1、将下列语句翻译为逆波兰表示 后缀式 、三元式和四元表示:
a: b+c *e+ b+c /f把中缀式转换为后缀式的简单方法:按中缀式中各运算符的优先规则,从最先执行的部分开始写,一层层套。如a≤b+c∧a>
d∨a+b≠e,先把b+c写为bc+;然后把a≤套上去,成为abc+≤;再把a>d表示为ad>;然后把∧套上去,成为abc+≤ad>∧,依此类推。
州大学计算机科学与信息学院
逆波兰表示为:a: b+c *e+ b+c /fbc+e*bc+f/+:
州大学计算机科学与信息学院
四元式由4个部分组成:算符op、第1和第2运算量arg1和arg2,以及运算结果result。运算量和运算结果有时指用户自定义的变量,有时指编译程序引进的临时变量。如果op是一个算术或逻辑算符,则result总是一个新引进的临时变量,用于存放运算结果。
州大学计算机科学与信息学院
a: b+c *e+ b+c /f四元式序列为:
1 + ,b,c,T1 2 * ,T1,e,T2 3 + ,b,c,T3 4 / ,T3,f,T4 5 + ,T2,T4,T5 6 : ,T5,-,a
州大学计算机科学与信息学院
三元式只需3个域:op、arg1和arg2。与四元式相比,三元式避免了临时变量的填入,而是通过计算这个临时变量的语句的位置来引用这个临时变量。我们很容易把一个算术表达式或一个赋值句表示为四元式序列或三元式序列。
州大学计算机科学与信息学院
a: b+c *e+ b+c /f三元式序列为:
1 +,b,c 2 * , 1 ,e 3 + ,b,c 4 / , 3 ,f 5 + , 2 , 4 6 : ,a, 5
贵州翻译模式功能:
将中缀表达式翻译成后缀表达式的翻译模式大学计算机科学与信息学院
2、有如下翻译模式:E →TR思考:输入串3+4-5时的输出是?
R →addop T print addop.lexeme R1| εT →num print num.val
贵州大学计算机科学与信息学院
3、给定文法G[E]:E→T | E+T | E-T T→F | T*F | T/FF→i| E
求句型 F+i -T* E-T 的最左推导。最左推导如下:
E → E-T →T-T →F-T → E -T → E+T -T → T+T -T → F+T -T → F+F -T → F+i -T → F+i -T*F → F+i -T* E → F+i -T* E-T
贵
州
大
学
计
算机科
学
与
信息学院
3、用子树解释短语,直接短语,句柄给定文法G[E]:E→T | E+T | E-T
T→F | T*F | T/F
F→i| E
求句型 F+i -T* E-T 的短语、简单短语和句柄。该句型的短语有:F, i, F+i, F+i , E-T, E-T , T* E-T , F+i -T* E-T 简单短语有:F, i, E-T句柄为:F
州大学计算机科学与信息学院
4、给定文法G= i, d, ‘ ’, ‘ ’ , E,A , E, P ,其中P:E→iAE→EAA→i A→d A→ E
1 消除左递归;
2 计算改写后文法中各非终结符的FIRST 集和FOLLOW 集;
3 构造改写后文法的预测分析表;该文法是LL 1 文法吗?
州大学计算机科学与信息学院
直接左递归的消除 转换为右递归
引入新的变量A ,将左递归产生式A→Aα|β替换为A→βA ,A →αA |ε 。
例如:E→E+T|T T→T*F|F F→ E |id替换为:E→TE E→+TE |ε T→FT T →*FT |ε F→ E |id
一般地,假设文法G中的语法变量A的所有产生式如下:A→Aα1|Aα2|…|Aαn|β1|β2|…|βm
其中,βi i 1,2,…,m 不以A打头。则用如下的产生式代替A的所有产生式即可消除其直接左递归:A→β1A|β2A|…|βmA A→α1A|α2A|…|αnA|ε
州大学计算机科学与信息学院
提取左公因子:例如:G[E]:
E→abT| abE| bA提取左公因子之后:E→abE’ | bAE’ → T | E
州
大 1 消除左递归后的文法为:学
计
算
机
科
学
与
信息学院
E → iAE'
E’→ | AE'A → i
A →dA → E
E→iAE→EAA→i A→d A→ E
州大 2 各非终结符的FISRT集和FOLLOW集学计算机科学与信息学院
FIRST E {i}FIRS
文档评论(0)