【发布时间】:2015-02-26 12:42:43
【问题描述】:
我有一个语法,想证明它不在 LL(1) 中:
S->SA|A
A->a
由于它是一个左递归语法,为了找到第一个和后面的集合,我消除了左递归并得到:
S->AS'
S'->AS'|Empty
A->a
first of A={a} follow of S={$}
first of s'={a,ε} follow of S'={$}
first of S={a} follow of A={a,$}
但是当我填写解析表时,我没有得到任何包含 2 个条目的单元格。那么如何证明给定的文法不在 LL(1) 中呢?
【问题讨论】:
-
如果语法不明确(至少一个句子有不止一个解析树),那么该语法不在LL(1)中。现在我应该如何在这里表示解析表?
-
我知道左递归语法,模棱两可的语法不提供 ll(1) 语言。但我需要使用解析表来显示这个...如何?
-
Follow of (A)={ first of S'} ={a,用 S' 替换 epsilon 我必须写下 S 和 S'} 的后续,即 {a,$} 请建议我我错了。
-
您的
FIRST()和FOLLOW()计算根据更正的 CFG 是正确的。我将不得不检查语法以及 LL(1) 解析表的此类规则。
标签: parsing compiler-construction automation formal-languages ll