On Wed, Apr 13, 2011 at 11:22:39AM -0700, Terence Parr wrote:
> rpexpression : rpexpression_ ;
> rpexpression_
> : rpexpression_primary
> ( ( rpexpression OPERATOR ) )*
> ;
> rpexpression_primary
> : OPERAND
> ;
My original version:
>
> rp-expression <- rp-expression rp-expression operator / operand
>
Those result in completely different parse trees, is the problem.
Given:
5 4 * 2 1 - +
The original gives:
rp-expression <-
rp-expression=(
rp-expression=(operand=5) rp-expression=(operand=4) operator=*)
)
rp-expression=(
rp-expression=(operand=2) rp-expression=(operand=1) operator=-)
)
operator=+
The new one gives:
...
The new one simply doesn't work; it can't match a nested construct
unless its first segment is a bare operand, as far as I can tell.
-Robin
--
http://singinst.org/ : Our last, best hope for a fantastic future.
Lojban (http://www.lojban.org/): The language in which "this parrot
is dead" is "ti poi spitaki cu morsi", but "this sentence is false"
is "na nei". My personal page: http://www.digitalkingdom.org/rlp/
_______________________________________________
PEG mailing list
[email protected]
https://lists.csail.mit.edu/mailman/listinfo/peg