The problem is that you allow lst
to be empty. So there is no way to distinguish between:
lst ';' lst
and
';' lst
In other words, is the lst
empty or absent? The grammar is ambiguous.
I'd remove the empty production for lst
, but there are other solutions.