Looking quickly, it seems that, with the 2nd "Line" definition, an '='
character is only acceptable as part of "Model=", so lexing and therefore
parsing ends with the 1st equal sign not part of a ModelName1.

Hope this helps!

On Mon, Oct 3, 2016 at 2:29 AM, Haroldo Stenger <[email protected]>
wrote:

> Hi there,
>
> I'm tryin to parse this file:
> Model= 9: ParaLinux (Production)
> :KMW
> MajorVersion=1
> MinorVersion=5
> Path=farmas
> :eKMW
>
>
>
>
> With this :
>
>
>
> #!/usr/bin/perl
> use strict; use warnings; #use 5.010;
>
> use Data::Dumper;
> use File::Slurp;
> my $filename = $ARGV[0];
> my $data = read_file($filename);
> $data =~ s/\r//g;
> #print "$data";
> my $ast = Parser->parse(\$data);
> print Dumper $ast;
> # Below is a class that wraps the Marpa Parser
>
> package Parser;
>
> use Marpa::R2;
>
> my ($grammar);
>
> sub parse {
> my ($self, $ref) = @_;
> my $recce = Marpa::R2::Scanless::R->new({ grammar => $grammar });
> $recce->read($ref);
> my $val = $recce->value;# // die "No parse found";     <<<<<<<<<<<<<<<
> errors here with this message :
> #################### Can't use an undefined value as a SCALAR reference at
> files/gistfile2.pl line 25.
> return $$val;
> }
>
> BEGIN {
> $grammar = Marpa::R2::Scanless::G->new({
> bless_package => 'Ast',
> source => \<<'END SOURCE',
> :default ::= action => [name,values]
> lexeme default = action => [ start, length, value ] bless => ::name latm
> => 1
> :start ::= KBxpw
>
> KBxpw ::= KBxpwHEAD KBxpwTAIL bless => KBxpw
> KBxpwHEAD ::= ModelName1 EcolonBlock bless => KBxpwHEAD
> ModelName1 ::= ('Model=') ModelName bless => ModelName1
> KBxpwTAIL ::= EcolonBlock bless => KBxpwTAIL
> ModelName ~ [0-9: A-Za-z\(\)]+
> KBxpwHEAD ::= EcolonBlock bless => KBxpwHEAD
> EcolonBlock ::= BeginMark Body EndMark bless => EcolonBlock
> BeginMark ::= colon blockname bless => BeginMark
> EndMark ::= colonend blockname bless => EndMark
> Body ::= Lines
> Lines ::= Line*
> Line ~ [\=\^\<\>\|\ \_\-\,\;\:\!\?\/\.\'\"\(\)\[\]
> \{\}\@\$\*\\\&\#\%\+\.0-9a-zA-Z]*
> #Line ~ [\^\<\>\|\ \_\-\,\;\:\!\?\/\.\'\"\(\)\[\]
> \{\}\@\$\*\\\&\#\%\+\.0-9a-zA-Z]*
> blockname ~ [A-Za-z]+
> colon ~ [:]
> colonend ~ ':e'
>
> ws ~ [\s]+
> :discard ~ ws
> END SOURCE
> });
> }
>
>
> ------------
> If I use the second "Line" L0 definition, I get this error:
> [haroldo@semiosis ~]$ files/gistfile2.pl files/KBheader.xpw
> Error in SLIF parse: No lexeme found at line 3, column 15
> * String before error: =  9: ParaLinux (Production)\n:KMW\n  MajorVersion
> * The error was at line 3, column 15, and at character 0x003d '=', ...
> * here: =1\n  MinorVersion=5\n  Path=farmas\n:eKMW\n
> Marpa::R2 exception at files/gistfile2.pl line 23.
>
>
> which makes me think there is some oddity related to non-letters , but I
> don't know.
>
> Any hint is really welcome !
>
> h
>
> --
> 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.
>

-- 
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.
  • L0 oddity Haroldo Stenger
    • Re: L0 oddity Jeffrey Kegler

Reply via email to