http://qs321.pair.com?node_id=1089860


in reply to Operator Associativity and Eliminating Left-Recursion in Parse::RecDescent

Thanks very much, a very very useful tutorial! I especially like the methodical and analytical approach very much.

Some small things I found in the text:


The document provides two implementation
=>
The document provides two implementations

have the same preceedence
=>
have the same precedence

The following subsections show how to evaluate the list how to treeify it.
=>
The following subsections show how to evaluate the list and how to treeify it.

In a list, that means the means the last (right-most) element encountered will be executed first.
=>
In a list, that means the last (right-most) element encountered will be executed first.

Fortuantely, Parse::RecDescent provides a means
=>
Fortunately, Parse::RecDescent provides a means

and each reference to that rule
=>
and of each reference to that rule

Just like function can have arguments, so can subrules.
=>
Just like functions can have arguments, so can subrules.

However, Parse::RecDescent handles rule with productions
=>
However, Parse::RecDescent handles rules with productions

Just like Parse::RecDescent has an directive for creating a flat list for a left-associative operator (<lefttop>),
=>
Just like Parse::RecDescent has a directive for creating a flat list for a left-associative operator (<leftop>),

The problem we have to pass $item[1] from pow to pow_.
=>
The problem is we have to pass $item[1] from pow to pow_.

The following subsections contains complete, working code
=>
The following subsections contain complete, working code