Hello, I'm having trouble figuring out how to express my grammar and was 
hoping someone could help. I've tried rewriting various ways and looking 
for some options that might change behavior, but I haven't been able to 
figure it out.

I have a language with variable assignment and simple commands and doesn't 
care about whitespace. So,

PAx=42   # variable assignment to "PAx"

PAx      # PA command with argument x

I have a grammar, but it insists on spaces after command names. I've tried 
hiding assignment behind a prioritized rule and tried setting the command 
lexeme priority, but I always get parse errors when parsing "PAx". I have a 
simplified grammer which exhibits the issue,

#!/usr/bin/perl
use warnings; use strict; use 5.028;

use Marpa::R2 8.000000;
use Data::Dumper;

my $grammar = 'Marpa::R2::Scanless::G'->new({ source => \(<<'RULES') });
:default ::= action => [name,values]
lexeme default = latm => 1

:start     ::= Program

Program    ::= Statement+

Statement  ::= Command terminator
            || Assign terminator

Command    ::= command arg

Assign     ::= variable equal value

# Doesn't help: :lexeme  ~ command  priority => 2
command      ~ 'PA' | 'PR'
arg          ~ [\w]+
equal        ~ '='
value        ~ [0-9]+
variable     ~ [\w]+
terminator   ~ [;\n]

:discard     ~ whitespace
whitespace   ~ [ \t]+
RULES

# This parses correctly, line 2 is a command, line 3 is assignment.
my $ok = <<TEXT;
x=23
PA x
PAx=42
TEXT

say Dumper($grammar->parse(\$ok));

# I want to generate same tree as above,
# but my grammar wants line 2 to be an assignment.
my $bad = <<TEXT;
x=23
PAx
PAx=42
TEXT

# Error in SLIF parse: No lexeme found at line 2, column 4
say Dumper($grammar->parse(\$bad));

Is there some trick to this? Did I miss someting in the documentation?

Any suggestions?

Thanks!
  - Dean

-- 
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 marpa-parser+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/marpa-parser/32966712-7756-4590-8b13-c9b2decbc3e4n%40googlegroups.com.

Reply via email to