This time with attachment :/
On Wednesday, August 8, 2018 at 12:20:39 AM UTC-5, Michael Spertus wrote:
>
> Thanks for helping me to get to a (surprising) answer to my previous
> question. I was hoping you could help me with another. I want the following
> grammar to parse 'xy' as a single statement
>
> statements ::= statement+
>> statement ::= xy | x | y
>> x ::= 'x'
>> y ::= 'y'
>> xy ::= 'x' 'y'
>>
>>
> Unfortunately, it always parses as two statements, even if I use the
> attached "high_rule_only" code and rank the statement alternatives as
>
> statement ::= xy rank => 1 | x | y
>
>
> I still get two statements. Is there a way I can do this with ordering, or
> do I need to do something like traverse the ASF? Note that I need to do
> this at the ::= level rather than with lexemes because in the actual
> grammar I care about x and y are complicated rules themselves.
>
> Thanks,
> Mike
>
>
--
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.
use Marpa::R2;
use Data::Dumper;
my $dsl = <<'END_OF_DSL';
:default ::= action => [name,values]
lexeme default = latm => 1
:start ::= statements
statements ::= statement+
statement ::= xy rank => 1 | x | y
x ::= 'x'
y ::= 'y'
xy ::= 'x' 'y'
END_OF_DSL
my $grammar = Marpa::R2::Scanless::G->new( { source => \$dsl } );
my $recce = Marpa::R2::Scanless::R->new(
{ grammar => $grammar, semantics_package => 'CodeProcess' , ranking_method => 'high_rule_only' } );
my $input = 'xy';
my $length_read = $recce->read( \$input );
my $value_ref = $recce->value;
print Dumper($value_ref);