In order to further my understanding of parsers and grammars, I'm searching for a (hopefully simple) example of a language that is LL(2) but not LL(1). That is, a language that can be generated by an LL(2) grammar but not by any LL(1) grammar.
Are there useful languages in that class ? I.e could we imagine a computer language that is LL(2) but not LL(1) ?
The example mentioned in the book linked in Gunther's answer:
S -> a S A | epsilon
A -> a^k b S | c
is a grammar describing an LL(k+1) language that is not LL(k). In particular,
S -> a S A | epsilon
A -> a b S | c
is a grammar describing an LL(2) language that is not LL(1).
Parsing Techniques by Grune and Jacobs presents an example. An older version of this book is available online at
http://dickgrune.com/Books/PTAPG_1st_Edition/BookBody.pdf
and the example is on page 181.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With