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.

Reply via email to