rustlr 0.1.0

LR(1)/LALR(1) parser generator for rust
Documentation
# output for test1.grammar

parsing grammar from stdin..
abstract syntax type is i32
nonterminal E:i32
nonterminal T:i32
nonterminal F:i32
terminal +
terminal *
terminal (
terminal )
typedterminal num:i32
top symbol is E
see labeled token E:e
see labeled token T:t
PRODUCTION: E --> E:e + T:t {  return e+t; }
, preclevel 20
see labeled token T:t
PRODUCTION: E --> T:t {  return t; }
, preclevel 20
see labeled token T:t
see labeled token F:f
PRODUCTION: T --> T:t * F:f {  return t*f; }
, preclevel 20
see labeled token F:f
PRODUCTION: T --> F:f {  return f; }
, preclevel 20
see labeled token E:e
PRODUCTION: F --> ( E:e ) {  return e; }
, preclevel 20
see labeled token num:n
PRODUCTION: F --> num:n {  return n; }
, preclevel 20
7 rules in grammar
computing Nullable set
computing First sets
generating FSM for grammar...
transition to state 1 from state 0, symbol num..
state 1:
  (5) F --> num . , +
  (5) F --> num . , EOF
  (5) F --> num . , *
transition to state 2 from state 0, symbol T..
state 2:
  (1) E --> T . , EOF
  (2) T --> T .* F , EOF
  (2) T --> T .* F , +
  (2) T --> T .* F , *
  (1) E --> T . , +
transition to state 3 from state 0, symbol (..
state 3:
  (1) E --> .T , +
  (5) F --> .num , *
  (4) F --> ( .E ) , +
  (5) F --> .num , )
  (3) T --> .F , *
  (4) F --> ( .E ) , EOF
  (1) E --> .T , )
  (0) E --> .E + T , )
  (0) E --> .E + T , +
  (4) F --> .( E ) , +
  (4) F --> ( .E ) , *
  (3) T --> .F , )
  (2) T --> .T * F , +
  (4) F --> .( E ) , *
  (2) T --> .T * F , *
  (5) F --> .num , +
  (2) T --> .T * F , )
  (4) F --> .( E ) , )
  (3) T --> .F , +
transition to state 4 from state 0, symbol E..
state 4:
  (6) START --> E . , EOF
  (0) E --> E .+ T , +
  (0) E --> E .+ T , EOF
transition to state 5 from state 0, symbol F..
state 5:
  (3) T --> F . , +
  (3) T --> F . , EOF
  (3) T --> F . , *
transition to state 6 from state 2, symbol *..
state 6:
  (2) T --> T * .F , +
  (2) T --> T * .F , *
  (4) F --> .( E ) , *
  (5) F --> .num , EOF
  (4) F --> .( E ) , EOF
  (4) F --> .( E ) , +
  (5) F --> .num , *
  (5) F --> .num , +
  (2) T --> T * .F , EOF
transition to state 7 from state 3, symbol T..
state 7:
  (2) T --> T .* F , *
  (2) T --> T .* F , )
  (2) T --> T .* F , +
  (1) E --> T . , )
  (1) E --> T . , +
transition to state 8 from state 3, symbol num..
state 8:
  (5) F --> num . , +
  (5) F --> num . , )
  (5) F --> num . , *
transition to state 9 from state 3, symbol E..
state 9:
  (0) E --> E .+ T , )
  (4) F --> ( E .) , *
  (4) F --> ( E .) , EOF
  (0) E --> E .+ T , +
  (4) F --> ( E .) , +
transition to state 10 from state 3, symbol F..
state 10:
  (3) T --> F . , )
  (3) T --> F . , *
  (3) T --> F . , +
transition to state 11 from state 3, symbol (..
state 11:
  (5) F --> .num , +
  (4) F --> ( .E ) , )
  (5) F --> .num , )
  (0) E --> .E + T , +
  (2) T --> .T * F , *
  (4) F --> ( .E ) , +
  (4) F --> .( E ) , )
  (3) T --> .F , +
  (2) T --> .T * F , )
  (5) F --> .num , *
  (1) E --> .T , )
  (3) T --> .F , *
  (3) T --> .F , )
  (0) E --> .E + T , )
  (1) E --> .T , +
  (4) F --> .( E ) , +
  (2) T --> .T * F , +
  (4) F --> ( .E ) , *
  (4) F --> .( E ) , *
transition to state 12 from state 4, symbol +..
state 12:
  (2) T --> .T * F , *
  (2) T --> .T * F , EOF
  (5) F --> .num , EOF
  (0) E --> E + .T , +
  (0) E --> E + .T , EOF
  (2) T --> .T * F , +
  (3) T --> .F , EOF
  (5) F --> .num , *
  (4) F --> .( E ) , *
  (3) T --> .F , +
  (4) F --> .( E ) , +
  (3) T --> .F , *
  (4) F --> .( E ) , EOF
  (5) F --> .num , +
transition to state 13 from state 6, symbol F..
state 13:
  (2) T --> T * F . , +
  (2) T --> T * F . , *
  (2) T --> T * F . , EOF
transition to state 3 from state 6, symbol (..
transition to state 1 from state 6, symbol num..
transition to state 14 from state 7, symbol *..
state 14:
  (2) T --> T * .F , )
  (4) F --> .( E ) , *
  (2) T --> T * .F , *
  (5) F --> .num , )
  (4) F --> .( E ) , +
  (2) T --> T * .F , +
  (5) F --> .num , *
  (5) F --> .num , +
  (4) F --> .( E ) , )
transition to state 15 from state 9, symbol +..
state 15:
  (3) T --> .F , )
  (5) F --> .num , +
  (2) T --> .T * F , *
  (4) F --> .( E ) , +
  (3) T --> .F , *
  (3) T --> .F , +
  (0) E --> E + .T , +
  (4) F --> .( E ) , )
  (5) F --> .num , )
  (0) E --> E + .T , )
  (2) T --> .T * F , )
  (2) T --> .T * F , +
  (4) F --> .( E ) , *
  (5) F --> .num , *
transition to state 16 from state 9, symbol )..
state 16:
  (4) F --> ( E ) . , EOF
  (4) F --> ( E ) . , *
  (4) F --> ( E ) . , +
transition to state 8 from state 11, symbol num..
transition to state 17 from state 11, symbol E..
state 17:
  (4) F --> ( E .) , *
  (4) F --> ( E .) , +
  (0) E --> E .+ T , )
  (0) E --> E .+ T , +
  (4) F --> ( E .) , )
transition to state 7 from state 11, symbol T..
transition to state 11 from state 11, symbol (..
transition to state 10 from state 11, symbol F..
transition to state 18 from state 12, symbol T..
state 18:
  (2) T --> T .* F , EOF
  (2) T --> T .* F , *
  (2) T --> T .* F , +
  (0) E --> E + T . , EOF
  (0) E --> E + T . , +
transition to state 1 from state 12, symbol num..
transition to state 5 from state 12, symbol F..
transition to state 3 from state 12, symbol (..
transition to state 19 from state 14, symbol F..
state 19:
  (2) T --> T * F . , +
  (2) T --> T * F . , )
  (2) T --> T * F . , *
transition to state 11 from state 14, symbol (..
transition to state 8 from state 14, symbol num..
transition to state 10 from state 15, symbol F..
transition to state 8 from state 15, symbol num..
transition to state 20 from state 15, symbol T..
state 20:
  (2) T --> T .* F , )
  (0) E --> E + T . , )
  (0) E --> E + T . , +
  (2) T --> T .* F , *
  (2) T --> T .* F , +
transition to state 11 from state 15, symbol (..
transition to state 21 from state 17, symbol )..
state 21:
  (4) F --> ( E ) . , +
  (4) F --> ( E ) . , *
  (4) F --> ( E ) . , )
transition to state 15 from state 17, symbol +..
transition to state 6 from state 18, symbol *..
transition to state 14 from state 20, symbol *..
state 0:
  (5) F --> .num , +
  (2) T --> .T * F , +
  (2) T --> .T * F , EOF
  (2) T --> .T * F , *
  (4) F --> .( E ) , +
  (4) F --> .( E ) , *
  (0) E --> .E + T , +
  (3) T --> .F , *
  (3) T --> .F , EOF
  (5) F --> .num , EOF
  (1) E --> .T , EOF
  (1) E --> .T , +
  (4) F --> .( E ) , EOF
  (6) START --> .E , EOF
  (0) E --> .E + T , EOF
  (3) T --> .F , +
  (5) F --> .num , *
22 total states