当前位置: 首页 > news >正文

编译原理陈火旺版第四章课后题答案

下面答案仅供参考!

1.考虑下面文法G1:

 

(1) 消去 Q 的左递归。然后,对每个非终结符,写岀不带回溯的递归子程序。

(2) 经改写后的文法是否是LL(1)的?给出它的预测分析表。

 

2.对下面的文法G:

\begin{array}{l}{\mathbf{E}\rightarrow\mathbf{TE}^{\prime}}\\ {\mathbf{E}^{\prime}\rightarrow+\mathbf{E}|\epsilon}\\ {\mathbf{T}\rightarrow\mathbf{FT}^{\prime}}\\ {\mathbf{T}^{\prime}\rightarrow\mathbf{T}|\epsilon}\\ {\mathbf{F}\rightarrow\mathbf{PF}^{\prime}}\\ {\mathbf F'\to\ast\mathbf F'\text{l}\varepsilon}\end{array}

P→(E)lalblΛ

(1)计算这个文法的每个非终结符的FIRST和FOLIOW.



(2)证明这个文法是LL(1)的。

 

(3)构造它的预测分析表。

(4)构造它的递归下降分析程序。

 

 

 

3.下面文法中,哪些是LL(1)的,说明理由。

 

 

 

  

 

4. 对下面文法:

 

(1) 构造 LL(1)分析表。

(2) 给出对句子 id - -id((id))的分析过程。

构造文法的预测分析表,通常应当按下列步骤进行: (1) 消除文法的左递归(包括所有直接左递归和间接左递归); (2) 对消除左递归后的文法,提取左公因子; (3) 对经过上述改造后的文法,计算它的每个非终结符的 FIRST 集合和 FOLLOW 集合 ⑷ 根据 FIRST 集合和 FOLLOW 集合构造预测分析表:

 

 

5. 把下面文法改写为 LL(1)的:

       本题目主要考査学生理解和运用消除文法的左递归、提取左公共因子等算法的能力, 为判断文法是否是 LL(1)文法,还要计算文法的 FIRST 集合和 FOLLOW 集合。

     消除文法的左递归的基本思想是,将文法规则中的左递归结构变换成等价的右递归结构。

     提取左公因子的算法,是对包含公共左因子的产生式候选,反复提取左因子,就能够 把每个非终结符(包括新引进者)的所有候选首符集变成为两两不相交。

     消除文法的左递归、提取左公共因子后,再计算文法的各非终结符00的首符集 FIRST( X)和随符集 FOLLOW( X),然后根据 LL(1)文法的充分必要条件(即 LL(1)文法 的定义)来判断文法是否是 LL(1)文法。

 

显然,改造后的文法是 LL(1)的。

http://www.lryc.cn/news/39883.html

相关文章:

  • 【LeetCode】剑指 Offer(25)
  • 【数据结构】链表OJ
  • 电子工程师必须掌握的硬件测试仪器,你确定你都掌握了?
  • 高速PCB设计指南系列(四)
  • ODrive入门配置
  • 快速测试两台服务器间的网速(ChatGPT回复)
  • 彻底搞懂nodejs事件循环
  • Linux基础命令大全(下)
  • Matplotlib从入门到精通05-样式色彩秀芳华
  • < CSS小技巧:那些不常用,却很惊艳的CSS属性 >
  • GPT-4 重磅发布,用户直呼:强得离谱
  • 【JavaSE】知识点总结(3)
  • MySQL基础(三)聚合函数、子查询
  • 深度学习数据集处理基础内容——xml和json文件详解
  • 蓝桥杯基础技能训练
  • 【Kubernetes】第二十八篇 - 实现自动构建部署
  • 蓝桥杯刷题第十天
  • 网络安全缓冲区溢出与僵尸网络答题分析
  • 机器学习:逻辑回归模型算法原理(附案例实战)
  • IO流之 File 类和字节流
  • 【华为机试真题 Python实现】2023年1、2月高频机试题
  • 【拳打蓝桥杯】最基础的数组你真的掌握了吗?
  • 断崖式难度的春招,可以get这些点
  • 一年经验年初被裁面试1月有余无果,还遭前阿里面试官狂问八股,人麻了
  • 我从功能测试到python接口自动化测试涨到22k,谁知道我经历了什么......
  • SDG,ADAM,LookAhead,Lion等优化器的对比介绍
  • 【项目实现典型案例】12.数据库数据类型不一致导致查询慢
  • 【大数据开发】报错汇总
  • HTTPS的加密原理(工作机制)
  • Git仓库迁移