Peter Goodman | 9 Oct 2011 23:45
Picon
Gravatar

Re: Fun with left recursion

Well, using code that I haven't touched in ages and a completely
experimental approach, what I get for http://codepad.org/EvnKQm98  is:

case 1: doesn't do anything, doesn't loop
case 2: behaves like S -> a
case 3: segfault.. hrmmmm.
case 4: reads in aaa.

This is using http://projects.ioreader.com/cp/

Best Regards,

Peter Goodman,
http://www.petergoodman.me
65 High Park Ave. APT 413,
Toronto, Ontario
M6P 2R7

On Sun, Oct 9, 2011 at 4:39 PM, Bryan Ford <bryan.ford <at> yale.edu> wrote:
> Left recursion in PEGs indeed seems like an interesting can of worms.  For those interested, I'm
wondering how a few example grammars behave under your preferred left-recursive parsing technique, and
how you think they should behave.
>
> First, a trivially evil left-recursive grammar:
>
> S <- S
>
> For example, does your parser detect and reject this somehow, or does it behave the same as 'S <- f'?  (I
hope it doesn't result in an infinite loop at runtime anyway. :) )
>
> Now a grammar that's weird, not necessarily evil, in a slightly more subtle way:
>
> S <- S / a
>
> Does this behave the same as 'S <- a', or do something else?  How should it behave?
>
> Cranking up the evilness factor one notch with a mutually left-recursive grammar…
>
> S <- T / a
> T <- S / &a
>
> Given the input string "a", does this behave the same as 'S <- a' (succeeding and consuming) or the same as 'S
<- &a' (succeeding but consuming no input)?  Do S and T behave the same way or differently?  Should they?
>
> Now, another grammar that's not necessarily evil but strange in a slightly different way:
>
> S <- Saa / a /
>
> Given the input string 'aaaa', for example, does/should this grammar consume just 3 or all 4 a's, or does it
do something else?  What should it do?
>
> Cheers,
> Bryan
> _______________________________________________
> PEG mailing list
> PEG <at> lists.csail.mit.edu
> https://lists.csail.mit.edu/mailman/listinfo/peg
>

Gmane