Hi Robin,

Well, my little pattern matching thing would see that as a "nonstandard" 
operator (not binary or unary etc.) and consider it a suffix operator because 
it begins with immediate left recursion. It may not be pretty, but here is what 
I get from

rpexpression
    : rpexpression rpexpression OPERATOR
    | OPERAND
    ;

becomes

rpexpression : rpexpression_[0]  ;
rpexpression_[int _p]
    :   rpexpression_primary
        ( ( {_p <= 3}?=> rpexpression OPERATOR ) )*
    ;
rpexpression_primary
    : OPERAND
    ;

Does not look correct? I have to jump off and prepare for class :) If not, I 
better add a note to look into it.
Ter
On Apr 13, 2011, at 10:37 AM, Robin Lee Powell wrote:

> On Wed, Apr 13, 2011 at 10:26:14AM -0700, Terence Parr wrote:
>> On Apr 12, 2011, at 12:31 PM, Laurence Tratt wrote:
>>> On Tue, Apr 12, 2011 at 08:47:42AM -0700, Terence Parr wrote:
>>> 
>>> Dear Terence,
>>> 
>>>> Only limitation is immediate-left-recur handled only.  In my
>>>> experience, that's good enough :)  No point in some complicated
>>>> algorithm when this covers any grammar I'd care about.
>>> 
>>> A quick question: is any type of direct left recursion handled?
>>> I'm probably being an idiot here (it's my normal mode), but your
>>> wiki post suggests that this relies on the grammar being built
>>> in an "expression" sort-of way, but the above post suggested
>>> there might be a bit more flexibility?
>> 
>> Hi. Yep, in the end, it was straightforward to convert any
>> immediate left recursion 
> 
> People keep saying that, but I can't seem to figure it out.  I
> especially can't see any way to deal with left recursion that
> doesn't totally break the meaningfulness of the resulting parse
> tree.
> 
> Here's the bane of my PEG existence, from the Lojban grammar; it's a
> very simple two-argument-only RPN calculator:
> 
>  rp-expression <- rp-expression rp-expression operator / operand
> 
> I can't see any way to fix that that leaves the operators associated
> with their argumenst properly.
> 
> I'd love some help, if people have time.
> 
> -Robin


_______________________________________________
PEG mailing list
PEG@lists.csail.mit.edu
https://lists.csail.mit.edu/mailman/listinfo/peg

Reply via email to