[back]
0    start -> expr
1    expr -> assign-expr
2    assign-expr -> or-expr assign-op assign-expr
3    assign-expr -> or-expr
4    or-expr -> or-expr or-op and-expr
5    or-expr -> and-expr
6    and-expr -> and-expr and-op eq-expr
7    and-expr -> eq-expr
8    eq-expr -> eq-expr eq-op rel-expr
9    eq-expr -> rel-expr
10   rel-expr -> rel-expr rel-op shift-expr
11   rel-expr -> shift-expr
12   shift-expr -> shift-expr shift-op add-expr
13   shift-expr -> add-expr
14   add-expr -> add-expr add-op mul-expr
15   add-expr -> mul-expr
16   mul-expr -> mul-expr mul-op unary-expr
17   mul-expr -> unary-expr
18   unary-expr -> unary-op unary-expr
19   unary-expr -> primary-expr
20   primary-expr -> NUMBER
21   primary-expr -> IDENT
22   primary-expr -> LPAREN expr RPAREN
23   assign-op -> ASSIGN
24   or-op -> OR
25   and-op -> AND
26   eq-op -> EQ
27   eq-op -> NE
28   rel-op -> LT
29   rel-op -> GT
30   rel-op -> LE
31   rel-op -> GE
32   shift-op -> LSHIFT
33   shift-op -> RSHIFT
34   add-op -> PLUS
35   add-op -> MINUS
36   mul-op -> TIMES
37   mul-op -> DIVIDE
38   unary-op -> PLUS
39   unary-op -> MINUS

0
-----
start ->.expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

expr - GOTO 6
assign-expr - GOTO 7
or-expr - GOTO 8
and-expr - GOTO 9
eq-expr - GOTO 10
rel-expr - GOTO 11
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

1
-----
primary-expr -> NUMBER. (20)

* - REDUCE 20 primary-expr

2
-----
primary-expr -> IDENT. (21)

* - REDUCE 21 primary-expr

3
-----
primary-expr -> LPAREN.expr RPAREN

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

expr - GOTO 18
assign-expr - GOTO 7
or-expr - GOTO 8
and-expr - GOTO 9
eq-expr - GOTO 10
rel-expr - GOTO 11
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

4
-----
unary-op -> PLUS. (38)

* - REDUCE 38 unary-op

5
-----
unary-op -> MINUS. (39)

* - REDUCE 39 unary-op

6
-----
start -> expr. (0)

EOT - DONE 0

7
-----
expr -> assign-expr. (1)

* - REDUCE 1 expr

8
-----
assign-expr -> or-expr.assign-op assign-expr
assign-expr -> or-expr. (3)
or-expr -> or-expr.or-op and-expr

ASSIGN - SHIFT 19
OR - SHIFT 20
* - REDUCE 3 assign-expr

assign-op - GOTO 21
or-op - GOTO 22

9
-----
or-expr -> and-expr. (5)
and-expr -> and-expr.and-op eq-expr

AND - SHIFT 23
* - REDUCE 5 or-expr

and-op - GOTO 24

10
-----
and-expr -> eq-expr. (7)
eq-expr -> eq-expr.eq-op rel-expr

EQ - SHIFT 25
NE - SHIFT 26
* - REDUCE 7 and-expr

eq-op - GOTO 27

11
-----
eq-expr -> rel-expr. (9)
rel-expr -> rel-expr.rel-op shift-expr

LT - SHIFT 28
GT - SHIFT 29
LE - SHIFT 30
GE - SHIFT 31
* - REDUCE 9 eq-expr

rel-op - GOTO 32

12
-----
rel-expr -> shift-expr. (11)
shift-expr -> shift-expr.shift-op add-expr

LSHIFT - SHIFT 33
RSHIFT - SHIFT 34
* - REDUCE 11 rel-expr

shift-op - GOTO 35

13
-----
shift-expr -> add-expr. (13)
add-expr -> add-expr.add-op mul-expr

PLUS - SHIFT 36
MINUS - SHIFT 37
* - REDUCE 13 shift-expr

add-op - GOTO 38

14
-----
add-expr -> mul-expr. (15)
mul-expr -> mul-expr.mul-op unary-expr

TIMES - SHIFT 39
DIVIDE - SHIFT 40
* - REDUCE 15 add-expr

mul-op - GOTO 41

15
-----
mul-expr -> unary-expr. (17)

* - REDUCE 17 mul-expr

16
-----
unary-expr -> unary-op.unary-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

unary-expr - GOTO 42
unary-op - GOTO 16
primary-expr - GOTO 17

17
-----
unary-expr -> primary-expr. (19)

* - REDUCE 19 unary-expr

18
-----
primary-expr -> LPAREN expr.RPAREN

RPAREN - SHIFT 43

19
-----
assign-op -> ASSIGN. (23)

* - REDUCE 23 assign-op

20
-----
or-op -> OR. (24)

* - REDUCE 24 or-op

21
-----
assign-expr -> or-expr assign-op.assign-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

assign-expr - GOTO 44
or-expr - GOTO 8
and-expr - GOTO 9
eq-expr - GOTO 10
rel-expr - GOTO 11
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

22
-----
or-expr -> or-expr or-op.and-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

and-expr - GOTO 45
eq-expr - GOTO 10
rel-expr - GOTO 11
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

23
-----
and-op -> AND. (25)

* - REDUCE 25 and-op

24
-----
and-expr -> and-expr and-op.eq-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

eq-expr - GOTO 46
rel-expr - GOTO 11
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

25
-----
eq-op -> EQ. (26)

* - REDUCE 26 eq-op

26
-----
eq-op -> NE. (27)

* - REDUCE 27 eq-op

27
-----
eq-expr -> eq-expr eq-op.rel-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

rel-expr - GOTO 47
shift-expr - GOTO 12
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

28
-----
rel-op -> LT. (28)

* - REDUCE 28 rel-op

29
-----
rel-op -> GT. (29)

* - REDUCE 29 rel-op

30
-----
rel-op -> LE. (30)

* - REDUCE 30 rel-op

31
-----
rel-op -> GE. (31)

* - REDUCE 31 rel-op

32
-----
rel-expr -> rel-expr rel-op.shift-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

shift-expr - GOTO 48
add-expr - GOTO 13
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

33
-----
shift-op -> LSHIFT. (32)

* - REDUCE 32 shift-op

34
-----
shift-op -> RSHIFT. (33)

* - REDUCE 33 shift-op

35
-----
shift-expr -> shift-expr shift-op.add-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

add-expr - GOTO 49
mul-expr - GOTO 14
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

36
-----
add-op -> PLUS. (34)

* - REDUCE 34 add-op

37
-----
add-op -> MINUS. (35)

* - REDUCE 35 add-op

38
-----
add-expr -> add-expr add-op.mul-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

mul-expr - GOTO 50
unary-expr - GOTO 15
unary-op - GOTO 16
primary-expr - GOTO 17

39
-----
mul-op -> TIMES. (36)

* - REDUCE 36 mul-op

40
-----
mul-op -> DIVIDE. (37)

* - REDUCE 37 mul-op

41
-----
mul-expr -> mul-expr mul-op.unary-expr

NUMBER - SHIFT 1
IDENT - SHIFT 2
LPAREN - SHIFT 3
PLUS - SHIFT 4
MINUS - SHIFT 5

unary-expr - GOTO 51
unary-op - GOTO 16
primary-expr - GOTO 17

42
-----
unary-expr -> unary-op unary-expr. (18)

* - REDUCE 18 unary-expr

43
-----
primary-expr -> LPAREN expr RPAREN. (22)

* - REDUCE 22 primary-expr

44
-----
assign-expr -> or-expr assign-op assign-expr. (2)

* - REDUCE 2 assign-expr

45
-----
or-expr -> or-expr or-op and-expr. (4)
and-expr -> and-expr.and-op eq-expr

AND - SHIFT 23
* - REDUCE 4 or-expr

and-op - GOTO 24

46
-----
and-expr -> and-expr and-op eq-expr. (6)
eq-expr -> eq-expr.eq-op rel-expr

EQ - SHIFT 25
NE - SHIFT 26
* - REDUCE 6 and-expr

eq-op - GOTO 27

47
-----
eq-expr -> eq-expr eq-op rel-expr. (8)
rel-expr -> rel-expr.rel-op shift-expr

LT - SHIFT 28
GT - SHIFT 29
LE - SHIFT 30
GE - SHIFT 31
* - REDUCE 8 eq-expr

rel-op - GOTO 32

48
-----
rel-expr -> rel-expr rel-op shift-expr. (10)
shift-expr -> shift-expr.shift-op add-expr

LSHIFT - SHIFT 33
RSHIFT - SHIFT 34
* - REDUCE 10 rel-expr

shift-op - GOTO 35

49
-----
shift-expr -> shift-expr shift-op add-expr. (12)
add-expr -> add-expr.add-op mul-expr

PLUS - SHIFT 36
MINUS - SHIFT 37
* - REDUCE 12 shift-expr

add-op - GOTO 38

50
-----
add-expr -> add-expr add-op mul-expr. (14)
mul-expr -> mul-expr.mul-op unary-expr

TIMES - SHIFT 39
DIVIDE - SHIFT 40
* - REDUCE 14 add-expr

mul-op - GOTO 41

51
-----
mul-expr -> mul-expr mul-op unary-expr. (16)

* - REDUCE 16 mul-expr

[back]