吉林大学编译原理2021-2022

一、选择

大部分都是学习通作业里面的原题,貌似只有一题不是

二、简答

1. 对于字符集{a,b},写出每个a后面至少有一个b的所有字符串的正则表达式以及LL1文法

2、判断S--->S*S|S+S|a 是否是二义性文法 (很显然a+a*a有两颗语法树)

3、S-->(L)|D

D-->bc

写出语法制导程序,实现检测括号匹配,例如(a+(a*a))成功匹配则输出括号对数2

否则不成功匹配输出“Not Match”,例如(a+(a*a)

4,写出E的递归下降分析程序

E->(E|$

注:因为代表空的字符打不出来,所以用$代替

5、层数和偏移问题

与之前做的习题(L,N)那题几乎一摸一样

6、静态链与动态链问题

主程序层数为0,其中调用链为main—>A--->B---C---->A

写出C调用A后的静态链与动态链情况。

程序结构图是main包裹着A,A里面包裹着B,B有包裹着C,然后注意C里面是调用A,C并没有包裹A

三,解答题

1、自动机问题,写出(a|b)*(aa|bb)b的非确定自动机表示,并将其确定化后画出DFA图,然后化简后画出最简DFA图

2、LL1文法问题,将所给文法变为LL1文法

要求:消除左递归和公共表达式

(题目不难,但是有一些改动,将以往的最递归产生式例如L->Lb|b这种变为了L->LS|SbL这一种,只需把SbL看成以往的终结符即可解答(个人理解))

3、全局符号表驻留法:

给出一段程序,要求写出扫描到i=a*b时的符号表内容,采用全局符号表驻留法,全局可用起始偏移为off,局部可用起始偏移为off0,主函数层数为0,对于变量,写出名字,种类,类型,层数和偏移,对于过程和函数,不用写出偏移

4、写出一段代码的四元式

(1),写出优化前的中间代码的四元式表示

(2)采用长表达式节省,公共表达式节省以及循环不变外提对四元式进行优化,写出优化后的四元式

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄狮少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值