Hi all, Here is a description of an idea to handle left-recursion in PEGs.
https://github.com/orlandodarhill/peg-left-recursion Unfortunately, not all of the details are worked out. I'm not sure, when I might have time to finish it. Orlando. On Sat, Nov 13, 2010 at 2:06 PM, Repain Alex <alex.rep...@gmail.com> wrote: > Hi Orlando, > > I've found some PEG-list archive about your algorithm suggestion > (here => http://www.mail-archive.com/peg@lists.csail.mit.edu/msg00096.html > ). > Do you have a more proper document about it ? I would be interested in > seeing your solution and what is the gap with Wrath et al.'s work. > > 2010/11/12 Orlando Hill <orlandodarh...@gmail.com> >> >> A few others have pointed out flaws in Warth's algorithm. >> >> http://tratt.net/laurie/research/publications/papers/tratt__direct_left_recursive_parsing_expression_grammars.pdf > > Yes, I had a talk with Laurence Tratt recently, only to find my algorithm > had also some associativity problems. He tackled a different problem from > mine, and I have a real interest in his work. >> >> Maybe, it's no better but, I still have a feeling the algorithm I >> hand-wavingly suggested, three years ago, actually works. It really >> seemed like it handled indirect left-recursion, allowed >> left-associative trees and maintained a linear runtime. In hindsight, >> I could have got help in trying to formalize and publish it. >> >> Anyway, I'm interested to hear what progress you've made. >> >> Orlando. >> >> On Fri, Nov 12, 2010 at 6:33 PM, Repain Alex <alex.rep...@gmail.com> >> wrote: >> > Hi PEG list, >> > >> > As an intern, I worked this summer in a japanese laboratory, on >> > left-recursion support for packrat parsers. One of the questions we had >> > a >> > hard time dealing with was the following : >> > >> > Since the original definition of PEG grammars doesn't take in account >> > the >> > grammars with left-recursive rules (directly or indirectly), what is the >> > behaviour we expect from a PEG parser, when dealing with those grammars >> > ? >> > >> > The first and intuitive solution is to avoid these rules, but a lot of >> > work >> > has been produced on the subject, including Wrath et al.'s paper [1] >> > (which >> > might be the most acknowledged), and today it seems we want to be able >> > to >> > handle left-recursive grammars. But this can reveal itself quite tricky. >> > Take for instance the following grammar : >> > >> > S <- A | B >> > A <- S a | a >> > B <- S b | b >> > >> > which is an indirectly left-recursive grammar. In a CFG context, this >> > grammar would represent the langage (a|b)+ . What about this in the PEG >> > context ? >> > >> > My guess is that, despites the fact that PEGs impose the concept of >> > ordered >> > choice, the expected behaviour of this grammar is to recognize the very >> > same >> > (a|b)+ langage, through a PEG parser - say for instance a packrat >> > parser. >> > Still, I would like to be sure of it, and if anybody has a CLEAR idea of >> > what SHOULD happen with a correct support for left-recursion, I'm eager >> > to >> > hear about it. Is there only a real convention for a correct behaviour ? >> > >> > My actual situation is the following : during my internship this summer, >> > I >> > started to doubt about the capacity for Wrath et al.'s algorithm to >> > handle >> > every type of left-recursive grammars. For instance, the above grammar, >> > when >> > passed to a Packrat parser with Wrath et al.'s enhancement, doesn't >> > recognize (a|b)+, but only a subset of this langage. That is not the >> > behaviour I expected, and thus I started working on a new algorithm able >> > to >> > take into account complex left-recursion cases. Yet, if my vision of how >> > a >> > parser behaves "correctly" is altered in some way, my work here could be >> > just good for the trash bin. >> > >> > Thanks for your help. >> > Alex >> > >> > P.S. : if someone is interested in my work, or in examples of strange >> > behaviour with Wrath et al.'s, I can provide them, one-to-one (to avoid >> > attached files on the mailing lists). >> > >> > [1] Packrat Parsers Can Support Left Recursion, Alessandro Warth, James >> > R. >> > Douglass, and Todd Millstein (2008) >> > >> > >> > _______________________________________________ >> > PEG mailing list >> > PEG@lists.csail.mit.edu >> > https://lists.csail.mit.edu/mailman/listinfo/peg >> > >> > > > _______________________________________________ PEG mailing list PEG@lists.csail.mit.edu https://lists.csail.mit.edu/mailman/listinfo/peg