> 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 is reported.
>
> Note in this way of doing things, the order of rules plays no role, not
> even in the generation of the error message. Marpa doesn't even try to
> figure out what's a lexeme until both grammars are fully formed.
Yes, I can see that.
Whereas I am going at it from the point of catching issues early.
I do this by
- Label all symbols on first encounter with an initial tag, depending
the initial context (G1/L) LHS/RHS :lexeme, ...)
- When the symbol is encountered again later the new context either
induces a state transition to a different tag, or throw an ERROR.
The possible tags thus encodes the entire knowledge gained so far
about an item. And the entirety of (tag,context --> tag|error) is a
nice DFA with the semantics running one instance of it per symbol
found.
I constructed the shown edge cases from the rows of the DFA where it
was not clear to me if the situation was an error or not.
> The above ignores some details. For example, there is a :lexeme
> pseudo-rule, and any symbol specified in one of these pseudo-rules is
> required to also be both a L0 lexeme and a G1 lexeme, by the above
> definitions.
Correct.
--
See you,
Andreas Kupries <[email protected]>
<http://core.tcl.tk/akupries/>
Developer @ SUSE
Tcl'2017, Oct 16-20, Houston, TX, USA. http://www.tcl.tk/community/tcl2017/
EuroTcl 2017, Jul 8-9, Berlin/DE, http://www.eurotcl.tcl3d.org/
-------------------------------------------------------------------------------
--
You received this message because you are subscribed to the Google Groups
"marpa parser" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.