是不是所有的文法都可以化为LL(1)文法?

转载 2015年11月18日 16:09:29

这个问题也是我想问的... 然后就搜到了这样的一个回答




提出一个问题:是不是所有的文法都可以化为LL(1)文法?

这个问题提得很好,说明该同学确实认真学习了本章内容,对没有讲到的问题进行了深入的思考。

 

应当指出,并非一切非LL(1)文法都能利用提取左因子的方法将它改造为LL(1)文法。例如,对于文法
S→AU|BR   A→aAU|b
B→aBR|b   U→c   R→d
对于S产生式,因有
FIRST(AU)∩FIRST(BR)={a,b}
故它不是一个LL(1)文法,为对S产生式的两个候选式提取左因子,可先将其中的非终结符号A,B分别用相应产生式的右部进行替换,我们得到
S→aAUU|bU|aBRR|bR
经提取左因子后,得到了与原文法等价的文法
S→aS′|bS″  S′→AUU|BRR    S″→U|R
A→aAU|b   B→aBR|b    U→c    R→d
显然,它仍不是一个LL(1)文法,且不难看出,无论将上述操作重复多少次都不能把它改造为LL(1)文法。
能由某一LL(1)文法产生的语言称为LL(1)语言。已经证明,LL(1)文法及LL(1)语言具有许多重要的特性。现不加证明地列举其中的一些主要结论如下:
(1) 任何LL(1)文法都是无二义性的;
(2) 左递归文法必然不是LL(1)文法;
(3) 存在一种算法,它能判断任意的文法是否为LL(1)文法;
(4) 存在一种算法,它能判定任意两个LL(1)文法是否产生相同的语言;
(5) 不存在这样的算法,它能判定任意的前后文无关语言是否为LL(1)语言;
(6) 非LL(1)语言 (即不能由任何LL(1)文法产生的前后文无关语言)是存在的。

判断是不是LL1文法

编最近上的编译原理课呢做实验,输入一个文法,然后判断是不是LL1文法,根据清华大学张素琴老师主编的《编译原理》第二版80页的算法,写了短程序: //compile.c #inclu...
  • u012458164
  • u012458164
  • 2014年03月28日 17:48
  • 1214

如何判断文法是否是LL(1)文法

判断该文法是不是LL(1)文法,说明理由 S→ABc A→a|ε B→b|ε?      First集合求法就是:能由非终结符号推出的所有的开头符号或可能的ε,但要求这个开头符号是终结符号。如此题...
  • Hammer_DA
  • Hammer_DA
  • 2014年06月19日 19:19
  • 10095

编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比

编译原理五种文法的对比讲解。 首先来看张图,上图是四种文法的包含关系,即 LR(1)文法范围最大,而 LR(0)文法范围最小。同时也说明了四种文法分析过...
  • zuzhiang
  • zuzhiang
  • 2018年01月12日 21:42
  • 182

编译原理 LL1文法的判断和句子识别

编译原理 LL1文法的判断和句子识别 LL1文法概述 点击查看百度百科 对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的 产生式A—>α|β ...
  • Justin_bibo
  • Justin_bibo
  • 2017年02月23日 21:14
  • 2738

LL(1)文法分析器简单实现

文法: E->E+T | T T->T*F | F F->(E)|i 消除左递归: E->TH H->+TH|e(空,一普赛肋) ...
  • IT_DREAM_ER
  • IT_DREAM_ER
  • 2016年12月06日 12:11
  • 2049

如何判断文法是LL(1)SLR(1)LR(1)LALR(1)的?

1.首先LL(1)分析法是自上而下的分析法。LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法。    2.自上而下?从开始符号出发,根据产生式规则推导给定的句子。    3....
  • carino_ly
  • carino_ly
  • 2014年04月19日 11:10
  • 2771

LL(1)文法代码(有一定的纠错能力)

#include #include #include using namespace std; /* 产生式为: E -> TE` E` -> + TE` T -> FT` T` -> *FT`...
  • shl_shl
  • shl_shl
  • 2016年11月28日 20:51
  • 399

LL(1)文法判断

LL(1)文法判断 题型: 1.判断该文法是否是LL(1)文法? 2.若是,给出它的LL(1)分析表,否则说明理由。 概念: 对于产生式 A -> α | β 1.如果α、β均...
  • hit_rxz
  • hit_rxz
  • 2014年12月01日 20:23
  • 1856

LL(1)文法

可以构造确定的(不带回溯)自上而下分析的文法条件: (1) 文法不含左递归 (2) 文法中每个非终结符A满足   A→α1 |α2 |…|αn     则:    FIRST(αi)∩FIRS...
  • liyun123gx
  • liyun123gx
  • 2014年02月26日 15:33
  • 1312

LL(1)文法实现(C系语言版)实现

一、实验目标     1.学习消除文法左递归算法。     2.掌握预测分析法实现语法分析。     3.自动求得“FIRST”、“FOLLOW”集构造预测分析表。    4.能够使用自己编写...
  • xj2419174554
  • xj2419174554
  • 2013年12月16日 23:01
  • 1899
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:是不是所有的文法都可以化为LL(1)文法?
举报原因:
原因补充:

(最多只允许输入30个字)