为了进一步理解解析器和语法,我正在寻找一个(希望很简单)语言的例子,即LL(2)但不是LL(1)。也就是说,一种语言可以由LL(2)语法生成,但不能由任何LL(1)语法生成。
该课程中是否有有用的语言?我可以想象一种LL(2)但不是LL(1)的计算机语言吗?
答案 0 :(得分:14)
本书中提到的例子与Gunther的答案相关联:
S -> a S A | epsilon
A -> a^k b S | c
是描述LL(k + 1)语言不是LL(k)的语法。特别是,
S -> a S A | epsilon
A -> a b S | c
是描述LL(2)语言不是LL(1)的语法。
答案 1 :(得分:8)
Parsing Techniques就是一个例子。
可在线获取本书的旧版本http://dickgrune.com/Books/PTAPG_1st_Edition/BookBody.pdf
,示例在第181页。