编译作业答案.pdfVIP

  • 41
  • 0
  • 约1.38万字
  • 约 10页
  • 2021-10-02 发布于湖北
  • 举报
7 - 2 给 定 文 法 G : S Aa|Ab|c A Ad|Se|f 请消除文法的左递归,并提取公共左因子。 解: (1)消除文法 G 的②产生式直接左递归。 A →SeA | fA ③ A →dA | ④ (2 )消除间接左递归:按 S.A 排序(按算法 i=2,j=1 时)将 S 的① 产生式代入③有 A →AaeA | AbeA | ceA | fA ⑤ (3 )消除⑤的直接左递归有 A →ceAA | fAA ⑥ A →aeAA | beAA | ⑦ (4 )对 S 的①产生式提公因子有 S→AB | c ⑧ B→| a | b ⑨ (5)最后,文法 G 提取公因子,消除左递归后的产生式由⑧ , ⑨ , ⑥ , ⑦和④组成,无 多余的产生式。 (6)若按 A.S 排序,得到的产生式组合是另外的形式,但它们是等价 的文法。 7-3 给定文法 G: S (L)|a L L,S|S 消除文法 G 的左递归,并写出递归下降分析的相应递归过程。 解: 消除左递归后,得文法 G: S→(L) | a L→SL L →, SL | 递归下降过程: procedure advance( ) begin sym =getchar( ) end procedure S; begin if sym =a then advance( ) else if sym =( then begin advance( ) L( ); if sym =) then advance( ) else error() end else error() end procudure L; begin S; L; end procudure L; begin if sym =, then begin advance( ) S; L end end 7-5 解: (1)G (S):S→AS S→:AS | A → BA A →+BA| B→bS* | a (2 )FIRST 集和 FOLLOW 集 FIRST FOLLOW S b,a # ,* S :, # ,* A b,a # ,* ,: A + , # ,* ,: B b,a # ,* ,:,+

文档评论(0)

1亿VIP精品文档

相关文档