> (a) X ::= CC ~ 'cc' BB ~ 'bb' A A ~ 'a':discard ~ A
>
> Forbidden. is required to be a lexeme since it is a discard symbol,
Oh! You are looking at discard symbols as a kind of the same thing as
lexemes, with lexemes the visible part, and discards hidden (*).
But from the
> The way Marpa checks internally is this
>
> 1.) Look for G1 symbols on a RHS, but not on a LHS -- these are the G1
> lexemes.
> 2.) Look for L0 symbols on a LHS, but not on a RHS -- these are the L0
> lexemes.
> 3.) The two sets of lexemes (G1 and L0) *should* be the same. If not, an
> error
(a) X ::= CC ~ 'cc' BB ~ 'bb' A A ~ 'a':discard ~ A
Forbidden. is required to be a lexeme since it is a discard symbol,
and cannot appear on the RHS of an L0 rule.
(b) X ::= C C ~ 'cc' B ~ 'bb' A A ~ 'a' :discard ~ A
is *not* unreachable. It is an L0 lexeme,