编译原理陈火旺版第四章课后题答案
创始人
2025-05-28 16:13:40

下面答案仅供参考!

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)的。

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
吸猫伐是什么意思 吸猫是吸哪里 作为铲屎官,相信对于网络上流行的各种与猫咪相关的梗都是了然于心的,什么吸猫啦,撸猫啦,云养猫啦……等...