- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
编译原理
2014
本来想照题的,做完感觉没啥新意,就不照了。
考点还是那⼏个。
LL(1),LR(0),SLR(1)和LR(1)的状态机和分析表构建。
短语、直接短语、句柄的定义。
L模式和S模式的翻译模式(给例⼦写拓展)。
UD链和DU链,以及活跃变量的计算。
实验相关考了类的实例的成员变量地址,VTable的(详细具体)内容(offset和function的对应关系
啥的),考察⽅式是给TAC代码补Decaf代码。
以及给lex和yacc代码求匹配结果。
特殊的⼀题是要构造⼀个串使得同⼀⽂法(悬挂else打最近匹配补丁)的SLR(1)⾃动机和LR(1)⾃动
机的匹配失败时ACTION的⻓度不⼀样。
认真/好好刷下⼏次作业题,然后做两套题就⾏了(e_n的06-07啥的)。
⼤约复习时间是(全⼒)6-8h……(个⼈)
2013
顺⼿发⼀下编译好了。我依然记得的不多了。⼤家补充。
实验题:
1⼀段lex代码,问作⽤是什么,答案应该是统计单词个数吧。反正就是每⼀个单词就
count++。
234记不得了=,有⼀个是关于变量作⽤域的,好像是给了⼀句话⾥⾯引⽤了⼀个参
数,然后问这个参数可能出现在哪个参数表⾥,我记得有好多种情况吧,可以是global也
可以是某⼀个函数的formal之类的。
5给⼀段代码,两个类,⼀个继承另⼀个的。好像介绍了⼀下vtable,然后问每⼀个类的
vtable和每⼀个类的⼀个实例分别占多⼤空间。这道题考完之后⼤家对答案就没有任意两
个⼈是⼀样的。。
其它:
常规的什么控制流啊,还有句柄啊,是不是LR(0)算法啊,画FSM啊,有什么冲突啊,之类
的。最后那道题考的是continue,要求写⼀个合法性的判断语句,⼀个属性⽂法,⼀个拉
链回填。
2012
题⽬2⼤张,不过代码很多
需要速度
⼀、decaf
1.BYACC中函数的表示为
Function:AttributesTypeIdentblabla...
其中Attributes表示函数性质,如static,private,public等,EBNF为
Attributes:Attribute*
为⽅便起⻅,假定每个属性可以出现多次,且private和public可重复出现,如publicstaticpublic
privatevoidf()
//这都什么玩意⼉……
假定static=1,public=2,private=4,那么Attributes=5=101表示privatestatic。
写出Attributes的BYACC代码:
Attributes:________
{
__________
}
||/*empty*/{
/*nothing*/
}
2.在判断BadArgCountError中有这样⼀段代码:
argNum=func.isStatik()?func.getArglist().size():func.getArglist().size()+1;
请解释为什么⼀个+1⼀个不+1.
3.TAC码
classMain{
intx;
inty;
intf(inta){returna;}
intg(inta){returna*a;}
staticvoidmain(){
classMaina;
____________
}
还有简写的vtable
然后给了⼀段TAC码
//完全就是天书……全忘了
然后填答案
估计答案是a.x=a.f(a.y)四个中的⼀个
a.ya.x
把TAC反着写出来也就会了
⼆、
PPT1053⻚的图,a:=0变成a:=3
1.编译到第8⾏时,作⽤域栈的所有内容;以及每个作⽤域的符号表
2.第2次运⾏到L⾏时,Display表中的内容(要求回答是第⼏次调⽤)
3.静态作⽤域和动态,在运⾏时结果有什么不同?
三、
PPT1020⻚
1.B5的⽀配节点,回边,⾃然循环
2.B2的livein,liveout
3.d7的UD链
4.d5的DU链
四、
S→M{P.y:=M.x}P{S.x:=M.x+P.x}
P→{A.y:=0}A{P1.y:=A.x}P1{P.x:=A.x+P1.x}
P→{A.y:=P.y}A{P.x:=A.x}
A→({P.y:=A.y}P{A.x:=P.x})
A→a{A.x:=A.y+1}
M→ε{M.x:=0}
1.给出(a)a
文档评论(0)