rustlr 0.1.1

LR(1)/LALR(1) parser generator for rust
Documentation
# ambiguous grammar for online calculator, enum Expr defined in exprtrees.rs

!use crate::exprtrees::*;
!use crate::exprtrees::Expr::*;

absyntype Expr
nonterminal E 
terminals + - * ( ) int
terminal ERROR
topsym E
errsym ERROR

left * 500
left + 400
left - 400

E --> int:n {n}
E --> E:e1 + E:e2 {Plus(bx(e1),bx(e2))}
E --> E:e1 - E:e2 {Minus(bx(e1),bx(e2)) }
E ==> E:e1 * E:e2
      { Times(bx(e1),bx(e2)) }
  <==
E --> - E:e { Negative(bx(e)) }
E --> ( E:e )  { e }
E --> ERROR int:n { parser.report("not a valid expression"); Val(-1000) }
EOF