I figured it out: I pared the grammar down to this:
:default ::= action => [name,values]
lexeme default = latm => 1
:start ::= line
line ::= name_group sep parmgroup
name_group ::= tag | tag whitespace names
sep ::= whitespace
sep ::=
whitespace ~ [\s]+
tag ::= tag_name
tag_name ~ <plain tag> | <annotation tag>
<plain tag> ~ [\w]+
<annotation tag> ~ '[' <plain tag> ']'
names ::= name+
name ~ [\w]+
parmgroup ::= paren_group
parmgroup ::=
paren_group ::= '(' parm_list ')'
parm_list ::= parm* separator => <comma>
parm ::= words | words '=' words
words ::= name+
<comma> ~ [,]
That makes it easier to see that name appears twice - if the 'names' and
'words' productions aren't both either G-level or L-level, you get the error.
Here's an example parse from the correctly working version:
http://www.vivtek.com/marpa/marpa_example1.html
The presentation is still pretty crude, but that'll change.
--
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.