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 anLL(k) grammarand astrong 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 moreweakthanstrong.