Hi,

Shorter script that demos problem: https://gist.github.com/ruz/8291475

Comments below:


On Tue, Jan 7, 2014 at 2:57 AM, Ron Savage <r...@savage.net.au> wrote:

> I made some small changes:
>
> ron@zigzag:~/Documents/repos/marpa.papers$ diff 
> ~/bin/vcard.parser.orig.pl~/bin/
> vcard.parser.pl
> 0a1,2
> > #!/usr/bin/env perl
> >
> 7c9
> < my $syntax = <<'END';
> ---
> > my $syntax = <<'EOS';
> 15,17c17,19
> < group ~ A_D_D
> < name ~ A_D_D
> < params ::= ';' param_list | empty
> ---
> > group ::= A_D_D
> > name ::= A_D_D
> > params ::= SEMICOLON param_list | empty
> 21c23
> < any_param_name ~ A_D_D
> ---
> > any_param_name ::= A_D_D
> 86c88
> < END
> ---
> > EOS
> 89c91
> < say "rules L0:\n", $grammar->show_rules(1, 'G0');
> ---
> > #say "rules L0:\n", $grammar->show_rules(1, 'G0');
>
> and I get:
>
> ron@zigzag:~/Documents/repos/marpa.papers$ ~/bin/vcard.parser.pl
> Setting trace_terminals option
> Lexer "L0" rejected lexeme L1c1-11: text; value="BEGIN:VCARD"
> Lexer "L0" accepted lexeme L1c1-11: 'BEGIN:VCARD'; value="BEGIN:VCARD"
>

You see here that lexer rejected text rule, but accepted literal rule of
the same length.

Lexer "L0" accepted lexeme L1c12: CRLF; value="
> "
> Lexer "L0" rejected lexeme L2c1-11: text; value="VERSION:4.0"
> Lexer "L0" accepted lexeme L2c1-11: 'VERSION:4.0'; value="VERSION:4.0"
>

Once again.


> Lexer "L0" accepted lexeme L2c12: CRLF; value="
> "
> Lexer "L0" rejected lexeme L3c1-49: text;
> value="UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1"
>
>
Here lexer went for longer match and never tried A_D_D; value="UID".


> progress:
> P0 @0-0 L1c1 vCards -> . vCard +
> P1 @0-0 L1c1 vCard -> . 'BEGIN:VCARD' CRLF 'VERSION:4.0' CRLF content
> 'END:VCARD'
> P36 @0-0 L1c1 :start -> . vCards
> R1:1 @0-1 L1c1-11 vCard -> 'BEGIN:VCARD' . CRLF 'VERSION:4.0' CRLF content
> 'END:VCARD'
> R1:2 @0-2 L1c1-12 vCard -> 'BEGIN:VCARD' CRLF . 'VERSION:4.0' CRLF content
> 'END:VCARD'
> R1:3 @0-3 L1c1-L2c11 vCard -> 'BEGIN:VCARD' CRLF 'VERSION:4.0' . CRLF
> content 'END:VCARD'
> R1:4 @0-4 L1c1-L2c12 vCard -> 'BEGIN:VCARD' CRLF 'VERSION:4.0' CRLF .
> content 'END:VCARD'
> P2 @4-4 L2c12 content -> . content_line +
> P3 @4-4 L2c12 content_line -> . content_name params ':' value CRLF
> P4 @4-4 L2c12 content_name -> . name
> P5 @4-4 L2c12 content_name -> . group '.' name
> P6 @4-4 L2c12 group -> . A_D_D
> P7 @4-4 L2c12 name -> . A_D_D
>
> Error in SLIF parse: No lexemes accepted at line 3, column 1
>   Lexer "L0" rejected 1 lexeme(s)
>   Rejected lexeme #1: text;
> value="UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1"; length = 49
> * String before error: BEGIN:VCARD\nVERSION:4.0\n
> * The error was at line 3, column 1, and at character 0x0055 'U', ...
> * here: UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1\n
> Marpa::R2 exception at /home/ron/bin/vcard.parser.pl line 96.
>
> So it is trying A_D_D.
>

Sure. Recognizer waits for A_D_D, but lexer never offers it.


>  --
> 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.
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
Best regards, Ruslan.

-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to