Just a quickie:
I know exactly what an LL(k) parser and grammar is, so that does not need any clarification.
However, I cannot understand the difference between an LL(k) grammar and a strong LL(k) grammar.
Can anyone explain that difference?
The textbook explains it like this:
What I understand from that (tell me if I am right or wrong): A strong LL(k) grammar is an LL(k) grammar that can derive a specific input string in 2 different ways and come out with the same result.
Let G = ( V, sigma, P, S ) be a context-free grammar with endmarker #^k. G is strong LL(k) if whenever there are two leftmost derivations:
S ->* u1 A v1 -> u1 x v1 ->* u1 z w1
s ->* u2 A v2 -> u2 y v2 ->* u2 z w2
where ui, wi, z are elements of sigma* and length(z) = k, then x = y.
If that is true, why would that be, and why would it be called so? It almost seems to me that it would be more weak than strong.