- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章
习题 4.2.1 : 考虑上下文无关文法: S-S S +|S S *|a 以及串 aa + a*
(1) 给出这个串的一个最左推导
S - S S *
- S S + S *
- a S + S *
- a a + S *
- aa + a*
(3) 给出这个串的一棵语法分析树
习题 4.3.1 : 下面是一个只包含符号 a 和 b 的正则表达式的文法。它使用 +替代表示并运算的符号 | ,以避免和文法中作为元符号使用的竖线相混淆:
rexpr rexpr + rterm | rterm
rterm rterm rfactor | rfactor
rfactor rfactor * | rprimary
rprimary a | b
对这个文法提取公因子
提取公因子的变换使这个文法适用于自顶向下的语法分析技术吗?
提取公因子之后,原文法中消除左递归
得到的文法适用于自顶向下的语法分析吗? 解
提取左公因子之后的文法变为rexpr rexpr + rterm | rterm rterm rterm rfactor | rfactor rfactor rfactor * | rprimary rprimary a | b
不可以,文法中存在左递归,而自顶向下技术不适合左递归文法
消除左递归后的文法
rexpr - rterm rexpr ’
rexpr -’ + rterm rexpr ’|
rterm- rfactor rterm ’
rterm -’ rfactor rterm ’|
rfactor- rprimay rfactor ’
rfactor -’*rfactor ’|
rprimary- a | b
该文法无左递归,适合于自顶向下的语法分析
习题 4.4.1 :为下面的每一个文法设计一个预测分析器,并给出预测分析表。可能要先对文法进行提取左公因子或消除左递归
(3)S-S(S)S|
(5)S-(L)|a L-L,S|S
解
(3)
①消除该文法的左递归后得到文法
S-S ’
S ’ -(S)SS ’ |
用类 Pascal语言构造的一个预测分析器:
②计算 FIRST 和 FOLLOW集合 PROCEDURE S
FIRST(S)={(, } FOLLOW(S)={),$}
BEGIN
FIRST(S ’ )={(, } FOLLOW(S’ )={),$}
S;
③构建预测分析表
WHILE (lo okahead==’ ()
非终结符号 输入符号
THEN BEGIN
( match ((); ) $
(5)
S S-S’ S-S’ S-S’ S;
’ ’ ’ ’ ’
’ ’ ’ ’ ’
match ());
END;
①消除该文法的左递E归L得SE到I文F (法lookahead==a)
S-(L)|a
L-SL ’
L ’ -,SL ’E|ND;
THEN match(a) ELSE error
用类 Pascal语言的一个预测分析器:
②计算 FIRST 和 FOLLOW集合 PROCEDURE S
FIRST(S)={(,aB}EGFIONLLOW(S)={ ), , ,$}
if (lookahead== ’ () FIRST(L)={(,a} FOLLOW(L)={ ) }
THEN BEGIN
FIRST(L ’ )={ , , } FOLmLOatWch(L((’);)={ ) }
L;
③构建预测分析表
match ());
非终结符号 输入E符ND号;
EL( SE IF (looka)head==a)
, a $
S S-(L)
THEN match(a)
S-a
L L-SL ’ELSE error
L-SL ’
L’ END;
L’ - L’ -,SL ’
习题 4.4.4PRO计C算E练DU习RE4L.2; .2 的文法的 FIRST 和 FOLLOW集合
3)S S(S)S|
BEGIN
S;
WHILE (lookahead == , ); BEGIN
match ( , );
S;
5)S (L)|a,L L,S|S
解:
3)FIRST(S)={ ,( } FOLLOW(S)={ (,),$ }
5)FIRST(S)={ (,a } FOLLOW(S)={ ), , ,$ }
FIRST(L)={ (,a } FOLLOW(L)={ ), , }
习题 4.6.2 为练习 4.2.1 中的增广文法构造 SLR项集,计算这些项集的 GOTO函数, 给出这个文法的语法分析表。这个文法是 SLR文法吗?
S SS+|SS*|a
解:
①构造该文法的增广文法如下
S’ -S S-SS+ S-SS* S-a
②构造该文法的 LR(0)
您可能关注的文档
最近下载
- 神经外科介入神经放射治疗技术操作规范2023版.pdf VIP
- 《IE基础知识培训》PPT课件.ppt
- 神经系统体格检查演示课件.ppt
- 《财经法规与会计职业道德》习题答案及解析.pdf VIP
- 租赁合同模板下载打印5篇.docx
- 专题1.2 全等图形和全等三角形(分层练习)-2023-2024学年八年级数学上册基础知识专项突破讲与练(苏科版).docx VIP
- 《时间序列分析》PPT课件(全).pptx
- 电大一网一《网络存储技术》形考任务三:基于iSCSI传输的配置与管理形考任务三:基于iSCSI传输的配置与管理(1).docx VIP
- 学校“四个一”突发事件应急处置工作机制范文(6篇).pdf VIP
- 饱和聚酯培训资料.ppt
文档评论(0)