- 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 一个正规语言可能对应多个正规文法; 2.算符优先分析与规范归约相比的优点是:A 归约速度快B 对文法限制少3.一个LR(1)文法合并同心集后若不是LALR(1)文法: A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突4.下面说法正确的是:A Lex是一个词法分析器的生成器B Yacc是一个语法分析器二、 问答题问答第1题(5分) 将文法G[S] 改写为等价的G[S],使G[S]不含左递归和左公共因子。 G[S]:
S→SAe|Ae A→dAbA|dA|d
解:文法G[S] 改写为等价的不含左递归和左公共因子的G[S]为: S →AeS S →AeS|ε A →dA A →AB|ε B →bA |ε
问答第2题(10分) 判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表。 S→aD D→STe|ε T→bH|H H→d|ε
首先计算文法的 FIRST集和FOLLOW集如下表。
文法的 FIRST集和FOLLOW集 非终结符
FIRST集
FOLLOW集
S
{a}.........
{# ,b ,d ,e}.
D
{a ,ε}....
{# ,b ,d ,e }
T
{b ,d ,ε}
{e}.............
H
{d ,ε}....
{e}.............
? 由于select(D→STe)∩select(D→ε)={a}∩{# ,b ,d ,e }= select(T→bH)∩select(T→H)={b}∩{e }= select(H→d)∩select(H→ε)={ d }∩{ e }=所以该文法是LL(1)文法,LL(1)分析表如下表。
LL(1)分析表 ?
a
e
b
d
#
S
→aD.
?
?
?
?
D
→STe
→ε
→ε
→ε
→ε
T
?
→H.
→bH
→H.
?
H
?
→ε
?
→d.
?
问答第3题(5分) 给出与正规式R=((ab)*|b)*(a|(ba)*)a 等价的NFA。
解:与正规式R=((ab)*|b)*(a|(ba)*)a 等价的NFA如下图
问答第4题解:根据所给的PL/0示意程序完成下列要求。(1)(4分) 给出 当程序执行到A过程体的write(c) 语句时的栈式存储分配布局和用Display 显示表时A过程最新活动记录的内容; (2)(2分) 说明在过程D中,当执行c:=b*a;语句时,变量c和b的存取位置是如何确定的(请填在下面的相应括号内)。 c的存取位置=( ) b的存取位置=( )PL/0示意程序为: var c; procedure M; procedure A; begin (* A *) write(c); end (* A *) procedure Z; var a,b; procedure D begin (* D *) c:=b*a; call A; end ;(* D *) begin (* Z *) call D; end ;(* Z *) begin (*M *) call Z; end ;(* M *) begin (*main *) call M; end. (* main *)
解:(1)当程序执行到A过程体的write(c) 语句时的栈式存储分配布局和用Display 显示表时A过程最新活动记录的内容如下图。
当程序执行到A过程时栈式存储分配布局和栈中过程最新活动记录的内容 (2)在过程D中,当执行c:=b*a;语句时,变量c和b的存取位置可如下确定:由于D过程的display表内容为:
d(3) D的SP d(2) Z的SP d(1) M的SP d(0) Main的SP 所以c的存取位置=(d(0)中Main的SP+c在Main中的偏移量) b的存取位置=(d(2)中Z的SP+b在Z中的偏移量)
问答第5题(6分)试对 while (ab and ac) or a=d do S:=a;的四元式序列给出第四区段应回填的指令地址,并指出真假链和链头及回填的次序。
? ? 应回填的值 回填的次序 ? (1) if ab goto ( ) ( ) 真链头 E.true
原创力文档


文档评论(0)