【问题标题】:Grammar describing an LL(2) language that is not LL(1), in which no rule can produce epsilon?描述不是 LL(1) 的 LL(2) 语言的语法,其中没有规则可以产生 epsilon?
【发布时间】:2020-08-09 08:01:30
【问题描述】:
This answer 显示了描述不是 LL(1) 的 LL(2) 语言的语法:
S -> a S A | epsilon
A -> a b S | c
在这个语法中,S 的一种可能性是它产生了空字符串epsilon。是否有任何语法类似地描述不是 LL(1) 但没有规则可以产生epsilon 的 LL(2) 语言?
【问题讨论】:
标签:
parsing
grammar
context-free-grammar
ll
【解决方案1】:
考虑这个语法:
S -> a S A | a c
A -> a b S | c
它不是 LL(1),因为非终结符 S 和终结符 a 存在 First/First 冲突。
这是一个 LL(2) 语法,因为它不包含任何 epsilon 规则,并且每个规则的第一组是不同的:
First_2(a S A) = {aa}
First_2(ac) = {ac}
First_2(a b S) = {ab}
First_2(c) = {c}