龙书 第四章课后作业答案
更新时间:2023-12-06 22:19:01 阅读量: 教育文库 文档下载
- 龙书金推荐度:
- 相关推荐
P1774.14 为练习4.3的文法构造一个预测语法分析器 bexpr→bexpr or bterm|bterm
bterm→bterm and bfactor | bfactor
bfactor→not bfactor|(bexpr)|true |false 解1 非递归方法 1) 消除左递归
①bexpr→bterm A ②A→or bterm A ③A→ε
④bterm→bfactor B ⑤B→and bfactor B ⑥B→ε
⑦bfactor→not bfactor ⑧bfactor→(bexpr) ⑨bfactor→true ⑩bfactor→false
2) 求first集 与 follow集
针对以同一非总结符开头的产生式右部求first集 如果该非终结符能产生ε 则需要求其follow集
①bexpr→bterm A first(bterm A)= {not,(,true,false}
②A→or bterm A first(or bterm A)={or}
③A→ε follow(A)=follow(bexpr)= {$, )}
④bterm→bfactor B first(bfactor B)={not,(,true,false} ⑤B→and bfactor B first(and bfactor B)={and}
⑥B→ε follow(B)=follow(bterm)=first(A)
因为first(A)= {or , ε} 包含ε
所以follow(B)=follow(bterm)
=first(A) ∪follow(A)-{ε}={or, $, )}
⑦bfactor→not bfactor first(not bfactor)={not} ⑧bfactor→(bexpr) first((bexpr))={(} ⑨bfactor→true first(true)={true} ⑩bfactor→false first(false)={false} 3) 根据步骤2)画预测分析表 or and not bexpr ( ① ) true ① false ① $ ③ ⑥ ② ⑥ ⑤ ① ③ ⑥ A bterm B ④ ④ ④ ④ ⑦ ⑧ ⑨ ⑩ bfactor 表中空白处填error,表示调用错误处理程序
4) 根据步骤3)编写预测分析程序
下面给出通用的预测分析算法,具体程序留给同学们根据算法自己完善。 repeat
1
X=当前栈顶符号;a=当前输入符号; if X∈VT∪{#} then
if X=a then
if X≠# then {将X弹出,且前移输入指针} else error
else
if M[X,a]=Y1Y2…Yk then
{将X弹出;依次将Yk…Y2Y1压入栈; 输出产生式X→Y1Y2…Yk }
else error
until X=#
注:
如果考虑错误恢复,上面的预测分析表还显得简单,应该将每个非总结符的follow集作为同步(sync)记号,便于错误恢复。具体留给感兴趣的同学深入研究
解2:递归下降方法
①消除给定文法中的左递归,并提取公因子: bexpr→bterm {or bterm } bterm→bfactor {and bfactor}
bfactor→not bfactor | (bexpr) | true |false ② 用类Pascal语言写出其递归预测分析器 PROCEDURE bexpr; BEGIN Bterm
WHILE (lookahead =='or') BEGIN
match ('or'); bterm; END; END;
PROCEDURE bterm; BEGIN
2
bfactor;
WHILE (lookahead =='and'); BEGIN
match ('and'); bfactor; END; END;
PROCEDURE bfactor; BEGIN
if (llokahead=='not') then BEGIN match ('not'); bfactor; END
else if (lookahead=='(') then BEGIN match ('('); bexpr; match(')'); END
else if (lookahead =='true') then match ('true)
else if (lookahead=='false') then match ('false'); else error; END;
P1784.24 图4-60给出了练习4.1中文法的算符优先关系,利用这些优先关系分析练习4.1(b)的句子。 S→(L)|a L→L,S|S
解:
对每个终结符或$建立符号f与g,把f(和g)
分成一组。根据文法的算符优先关系表,画出如下的有向图。
3
优先函数如下:
用算符优先分析法分析句子(a,(a,a))
另外2个句子的分析略。
4
(也可不必如上面先构造优先矩阵在分析,亦可直接分析)
P1794.35 考虑下面文法 E→E+T|T T→TF|F F→F*|a|b
a) 试为该文法构造SLR语法分析表
解:
该文法的拓广文法G'为 (0) E' → E (1) E → E+T (2) E → T (3) T → TF (4) T → F (5) F → F* (6) F → a (7) F → b
其LR(0)项目集规范族和goto函数(识别活前缀的DFA)如下: I0 = {E'→·E, E→·E+T, E→·T, T→·TF, T→·F, F→·F*, F→·a, F→·b} I1 ={E'→E·, E→E·+T}
I2 ={E→T·, T→T·F, F→·F*, F→·a, F→·b} I3 ={T→F·, F→F·*} I4 ={F→a·} I5 ={F→b·}
I6 ={E→E+·T, T→·TF, T→·F, F→·F*, F→·a, F→·b} I7 ={T→TF·, F→F·*} I8 ={F→F*·}
I9 ={E→E+T·, T→T·F, F→·F*, F→·a, F→·b}
求FOLLOW集:
FOLLOW(E)={+, $}
FOLLOW(T)={+, $, a, b} FOLLOW(F)={+, $, a, b, *}
5
正在阅读:
龙书 第四章课后作业答案12-06
单招计算机理论第四次月考试卷06-14
“好书伴我成长”演讲比赛方案01-10
党员思想作风整顿心得体会通用范文8篇08-04
苏价服2014-383号 江苏省造价咨询新收费标准07-04
调频调幅接收机 - 图文01-19
企业2022年开展第三季度“清风行动”集中整治情况总结范文03-24
基于PLC的城市污水处理控制系统设计(开环) - 图文05-25
文山市古木镇中心学校关于建消防水池的请示07-04
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 第四章
- 课后
- 作业
- 答案
- 龙书
- DSP28335—CMD文件解读(映射关系) - 图文
- 管理学原理考试试题及答案
- 2015第三届中国汉字听写大会词语汇总
- 四年级《屋顶上的小孩》阅读测试题
- 2015年-实用文写作网上作业
- UC系高达机体简介 - 0080口袋中的战争(联邦、吉翁) - 图文
- 海南红岭水利枢纽工程概况
- 班级学号姓名统计学习题活页
- 园林植物栽培—答案篇
- 长春平安纸业有限责任公司素引号B3风险评估工作底稿
- 《电工电子技术》练习题(计算机)
- 八年级物理上册第四章第三节科学探究:平面镜成像第1课时探究平面镜成像特点练习新版教科版
- 影院放映人员维护技能摸底表-(含答案)
- 城中村调研报告
- 党支部议事决策制度
- 大学计算机基础期末考试答案
- 步步高2015届高考化学大一轮复习配套导学案第11章 课后练习50 实验方案的设计、改进及评价 doc
- 高中生物第一部分微生物的利用实验1大肠杆菌的培养和分离课后小测浙科版选修1
- 中南财经政法大学2012-2013学年度校级优秀博士、硕士论文获得者名单 - 图文
- CAD理论模拟试题(含答案)