Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LL(2) language that is not LL(1)

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) ?

like image 760
Norswap Avatar asked May 17 '12 10:05

Norswap


2 Answers

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).

like image 182
Norswap Avatar answered Sep 27 '22 19:09

Norswap


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.

like image 40
Gunther Avatar answered Sep 27 '22 20:09

Gunther