   0  $accept : %entry% $end

   1  program : decls EOF

   2  decls :
   3        | decls fdecl
   4        | decls vdecl

   5  vdecl : typ ID SEMI

   6  vdecl_list :
   7             | vdecl_list vdecl

   8  fdecl : typ ID LPAREN formals_opt RPAREN LBRACE vdecl_list stmt_list RBRACE

   9  formals_opt :
  10              | formal_list

  11  formal_list : typ ID

  12  array_typ : ARRAY typ LBRACK INTLITERAL RBRACK

  13  mat : MATRIX typ LBRACK INTLITERAL RBRACK LBRACK INTLITERAL RBRACK

  14  typ : INT
  15      | FLOAT
  16      | BOOL
  17      | VOID
  18      | IMG
  19      | STRING
  20      | array_typ
  21      | mat

  22  stmt_list :
  23            | stmt_list stmt

  24  stmt : expr SEMI
  25       | RETURN SEMI
  26       | RETURN expr SEMI
  27       | LBRACE stmt_list RBRACE
  28       | IF LPAREN expr RPAREN stmt
  29       | IF LPAREN expr RPAREN stmt ELSE stmt
  30       | WHILE LPAREN expr RPAREN stmt

  31  expr : literals
  32       | ID
  33       | ID LPAREN actuals_opt RPAREN
  34       | LPAREN expr RPAREN
  35       | expr PLUS expr
  36       | expr MINUS expr
  37       | expr TIMES expr
  38       | expr DIVIDE expr
  39       | expr EQ expr
  40       | expr NEQ expr
  41       | expr LT expr
  42       | expr LEQ expr
  43       | expr GT expr
  44       | expr GEQ expr
  45       | expr EXP expr
  46       | expr AND expr
  47       | expr OR expr
  48       | expr ASSIGN expr
  49       | MINUS expr
  50       | NOT expr
  51       | TRUE
  52       | FALSE
  53       | NULL
  54       | ID LBRACK expr RBRACK
  55       | ID LBRACK expr RBRACK LBRACK expr RBRACK
  56       | ID DOT LENGTH

  57  primitives : INTLITERAL
  58             | STRINGLITERAL
  59             | FLOATLITERAL

  60  literals : primitives
  61           | LBRACK primitive_arraylit RBRACK
  62           | LMATBRACK primitive_matrixlit RMATBRACK

  63  primitive_arraylit : primitives
  64                     | primitive_arraylit COMMA primitives

  65  primitive_matrixlit : primitive_arraylit
  66                      | primitive_matrixlit BAR primitive_arraylit

  67  expr_opt :
  68           | expr

  69  actuals_opt :
  70              | actuals_list

  71  actuals_list : expr

  72  %entry% : '\001' program

state 0
	$accept : . %entry% $end  (0)

	'\001'  shift 1
	.  error

	%entry%  goto 2


state 1
	%entry% : '\001' . program  (72)
	decls : .  (2)

	.  reduce 2

	program  goto 3
	decls  goto 4


state 2
	$accept : %entry% . $end  (0)

	$end  accept


state 3
	%entry% : '\001' program .  (72)

	.  reduce 72


state 4
	program : decls . EOF  (1)
	decls : decls . fdecl  (3)
	decls : decls . vdecl  (4)

	EOF  shift 5
	INT  shift 6
	BOOL  shift 7
	STRING  shift 8
	VOID  shift 9
	FLOAT  shift 10
	IMG  shift 11
	ARRAY  shift 12
	MATRIX  shift 13
	.  error

	fdecl  goto 14
	vdecl  goto 15
	typ  goto 16
	array_typ  goto 17
	mat  goto 18


state 5
	program : decls EOF .  (1)

	.  reduce 1


state 6
	typ : INT .  (14)

	.  reduce 14


state 7
	typ : BOOL .  (16)

	.  reduce 16


state 8
	typ : STRING .  (19)

	.  reduce 19


state 9
	typ : VOID .  (17)

	.  reduce 17


state 10
	typ : FLOAT .  (15)

	.  reduce 15


state 11
	typ : IMG .  (18)

	.  reduce 18


state 12
	array_typ : ARRAY . typ LBRACK INTLITERAL RBRACK  (12)

	INT  shift 6
	BOOL  shift 7
	STRING  shift 8
	VOID  shift 9
	FLOAT  shift 10
	IMG  shift 11
	ARRAY  shift 12
	MATRIX  shift 13
	.  error

	typ  goto 19
	array_typ  goto 17
	mat  goto 18


state 13
	mat : MATRIX . typ LBRACK INTLITERAL RBRACK LBRACK INTLITERAL RBRACK  (13)

	INT  shift 6
	BOOL  shift 7
	STRING  shift 8
	VOID  shift 9
	FLOAT  shift 10
	IMG  shift 11
	ARRAY  shift 12
	MATRIX  shift 13
	.  error

	typ  goto 20
	array_typ  goto 17
	mat  goto 18


state 14
	decls : decls fdecl .  (3)

	.  reduce 3


state 15
	decls : decls vdecl .  (4)

	.  reduce 4


state 16
	vdecl : typ . ID SEMI  (5)
	fdecl : typ . ID LPAREN formals_opt RPAREN LBRACE vdecl_list stmt_list RBRACE  (8)

	ID  shift 21
	.  error


state 17
	typ : array_typ .  (20)

	.  reduce 20


state 18
	typ : mat .  (21)

	.  reduce 21


state 19
	array_typ : ARRAY typ . LBRACK INTLITERAL RBRACK  (12)

	LBRACK  shift 22
	.  error


state 20
	mat : MATRIX typ . LBRACK INTLITERAL RBRACK LBRACK INTLITERAL RBRACK  (13)

	LBRACK  shift 23
	.  error


state 21
	vdecl : typ ID . SEMI  (5)
	fdecl : typ ID . LPAREN formals_opt RPAREN LBRACE vdecl_list stmt_list RBRACE  (8)

	SEMI  shift 24
	LPAREN  shift 25
	.  error


state 22
	array_typ : ARRAY typ LBRACK . INTLITERAL RBRACK  (12)

	INTLITERAL  shift 26
	.  error


state 23
	mat : MATRIX typ LBRACK . INTLITERAL RBRACK LBRACK INTLITERAL RBRACK  (13)

	INTLITERAL  shift 27
	.  error


state 24
	vdecl : typ ID SEMI .  (5)

	.  reduce 5


state 25
	fdecl : typ ID LPAREN . formals_opt RPAREN LBRACE vdecl_list stmt_list RBRACE  (8)
	formals_opt : .  (9)

	INT  shift 6
	BOOL  shift 7
	STRING  shift 8
	VOID  shift 9
	FLOAT  shift 10
	IMG  shift 11
	ARRAY  shift 12
	MATRIX  shift 13
	RPAREN  reduce 9

	typ  goto 28
	formals_opt  goto 29
	formal_list  goto 30
	array_typ  goto 17
	mat  goto 18


state 26
	array_typ : ARRAY typ LBRACK INTLITERAL . RBRACK  (12)

	RBRACK  shift 31
	.  error


state 27
	mat : MATRIX typ LBRACK INTLITERAL . RBRACK LBRACK INTLITERAL RBRACK  (13)

	RBRACK  shift 32
	.  error


state 28
	formal_list : typ . ID  (11)

	ID  shift 33
	.  error


state 29
	fdecl : typ ID LPAREN formals_opt . RPAREN LBRACE vdecl_list stmt_list RBRACE  (8)

	RPAREN  shift 34
	.  error


state 30
	formals_opt : formal_list .  (10)

	.  reduce 10


state 31
	array_typ : ARRAY typ LBRACK INTLITERAL RBRACK .  (12)

	.  reduce 12


state 32
	mat : MATRIX typ LBRACK INTLITERAL RBRACK . LBRACK INTLITERAL RBRACK  (13)

	LBRACK  shift 35
	.  error


state 33
	formal_list : typ ID .  (11)

	.  reduce 11


state 34
	fdecl : typ ID LPAREN formals_opt RPAREN . LBRACE vdecl_list stmt_list RBRACE  (8)

	LBRACE  shift 36
	.  error


state 35
	mat : MATRIX typ LBRACK INTLITERAL RBRACK LBRACK . INTLITERAL RBRACK  (13)

	INTLITERAL  shift 37
	.  error


state 36
	fdecl : typ ID LPAREN formals_opt RPAREN LBRACE . vdecl_list stmt_list RBRACE  (8)
	vdecl_list : .  (6)

	.  reduce 6

	vdecl_list  goto 38


state 37
	mat : MATRIX typ LBRACK INTLITERAL RBRACK LBRACK INTLITERAL . RBRACK  (13)

	RBRACK  shift 39
	.  error


state 38
	vdecl_list : vdecl_list . vdecl  (7)
	fdecl : typ ID LPAREN formals_opt RPAREN LBRACE vdecl_list . stmt_list RBRACE  (8)
	stmt_list : .  (22)

	INT  shift 6
	BOOL  shift 7
	STRING  shift 8
	VOID  shift 9
	FLOAT  shift 10
	IMG  shift 11
	ARRAY  shift 12
	MATRIX  shift 13
	LPAREN  reduce 22
	LBRACE  reduce 22
	RBRACE  reduce 22
	LBRACK  reduce 22
	LMATBRACK  reduce 22
	TRUE  reduce 22
	FALSE  reduce 22
	MINUS  reduce 22
	RETURN  reduce 22
	NULL  reduce 22
	IF  reduce 22
	WHILE  reduce 22
	NOT  reduce 22
	INTLITERAL  reduce 22
	STRINGLITERAL  reduce 22
	ID  reduce 22
	FLOATLITERAL  reduce 22

	vdecl  goto 40
	typ  goto 41
	stmt_list  goto 42
	array_typ  goto 17
	mat  goto 18


state 39
	mat : MATRIX typ LBRACK INTLITERAL RBRACK LBRACK INTLITERAL RBRACK .  (13)

	.  reduce 13


state 40
	vdecl_list : vdecl_list vdecl .  (7)

	.  reduce 7


state 41
	vdecl : typ . ID SEMI  (5)

	ID  shift 43
	.  error


state 42
	fdecl : typ ID LPAREN formals_opt RPAREN LBRACE vdecl_list stmt_list . RBRACE  (8)
	stmt_list : stmt_list . stmt  (23)

	LPAREN  shift 44
	LBRACE  shift 45
	RBRACE  shift 46
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	RETURN  shift 52
	NULL  shift 53
	IF  shift 54
	WHILE  shift 55
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	stmt  goto 61
	expr  goto 62
	literals  goto 63
	primitives  goto 64


state 43
	vdecl : typ ID . SEMI  (5)

	SEMI  shift 24
	.  error


state 44
	expr : LPAREN . expr RPAREN  (34)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 65
	literals  goto 63
	primitives  goto 64


state 45
	stmt : LBRACE . stmt_list RBRACE  (27)
	stmt_list : .  (22)

	.  reduce 22

	stmt_list  goto 66


state 46
	fdecl : typ ID LPAREN formals_opt RPAREN LBRACE vdecl_list stmt_list RBRACE .  (8)

	.  reduce 8


state 47
	literals : LBRACK . primitive_arraylit RBRACK  (61)

	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	FLOATLITERAL  shift 60
	.  error

	primitives  goto 67
	primitive_arraylit  goto 68


state 48
	literals : LMATBRACK . primitive_matrixlit RMATBRACK  (62)

	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	FLOATLITERAL  shift 60
	.  error

	primitives  goto 67
	primitive_arraylit  goto 69
	primitive_matrixlit  goto 70


state 49
	expr : TRUE .  (51)

	.  reduce 51


state 50
	expr : FALSE .  (52)

	.  reduce 52


state 51
	expr : MINUS . expr  (49)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 71
	literals  goto 63
	primitives  goto 64


state 52
	stmt : RETURN . SEMI  (25)
	stmt : RETURN . expr SEMI  (26)

	SEMI  shift 72
	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 73
	literals  goto 63
	primitives  goto 64


state 53
	expr : NULL .  (53)

	.  reduce 53


state 54
	stmt : IF . LPAREN expr RPAREN stmt  (28)
	stmt : IF . LPAREN expr RPAREN stmt ELSE stmt  (29)

	LPAREN  shift 74
	.  error


state 55
	stmt : WHILE . LPAREN expr RPAREN stmt  (30)

	LPAREN  shift 75
	.  error


state 56
	expr : NOT . expr  (50)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 76
	literals  goto 63
	primitives  goto 64


state 57
	primitives : INTLITERAL .  (57)

	.  reduce 57


state 58
	primitives : STRINGLITERAL .  (58)

	.  reduce 58


state 59
	expr : ID .  (32)
	expr : ID . LPAREN actuals_opt RPAREN  (33)
	expr : ID . LBRACK expr RBRACK  (54)
	expr : ID . LBRACK expr RBRACK LBRACK expr RBRACK  (55)
	expr : ID . DOT LENGTH  (56)

	LPAREN  shift 77
	LBRACK  shift 78
	DOT  shift 79
	SEMI  reduce 32
	RPAREN  reduce 32
	RBRACK  reduce 32
	PLUS  reduce 32
	MINUS  reduce 32
	TIMES  reduce 32
	DIVIDE  reduce 32
	EXP  reduce 32
	EQ  reduce 32
	NEQ  reduce 32
	LT  reduce 32
	LEQ  reduce 32
	GT  reduce 32
	GEQ  reduce 32
	ASSIGN  reduce 32
	AND  reduce 32
	OR  reduce 32


state 60
	primitives : FLOATLITERAL .  (59)

	.  reduce 59


state 61
	stmt_list : stmt_list stmt .  (23)

	.  reduce 23


state 62
	stmt : expr . SEMI  (24)
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	SEMI  shift 80
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 63
	expr : literals .  (31)

	.  reduce 31


state 64
	literals : primitives .  (60)

	.  reduce 60


state 65
	expr : LPAREN expr . RPAREN  (34)
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	RPAREN  shift 95
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 66
	stmt_list : stmt_list . stmt  (23)
	stmt : LBRACE stmt_list . RBRACE  (27)

	LPAREN  shift 44
	LBRACE  shift 45
	RBRACE  shift 96
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	RETURN  shift 52
	NULL  shift 53
	IF  shift 54
	WHILE  shift 55
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	stmt  goto 61
	expr  goto 62
	literals  goto 63
	primitives  goto 64


state 67
	primitive_arraylit : primitives .  (63)

	.  reduce 63


state 68
	literals : LBRACK primitive_arraylit . RBRACK  (61)
	primitive_arraylit : primitive_arraylit . COMMA primitives  (64)

	RBRACK  shift 97
	COMMA  shift 98
	.  error


state 69
	primitive_arraylit : primitive_arraylit . COMMA primitives  (64)
	primitive_matrixlit : primitive_arraylit .  (65)

	COMMA  shift 98
	BAR  reduce 65
	RMATBRACK  reduce 65


state 70
	literals : LMATBRACK primitive_matrixlit . RMATBRACK  (62)
	primitive_matrixlit : primitive_matrixlit . BAR primitive_arraylit  (66)

	BAR  shift 99
	RMATBRACK  shift 100
	.  error


state 71
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	expr : MINUS expr .  (49)

	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 49
	RPAREN  reduce 49
	RBRACK  reduce 49
	ASSIGN  reduce 49


state 72
	stmt : RETURN SEMI .  (25)

	.  reduce 25


state 73
	stmt : RETURN expr . SEMI  (26)
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	SEMI  shift 101
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 74
	stmt : IF LPAREN . expr RPAREN stmt  (28)
	stmt : IF LPAREN . expr RPAREN stmt ELSE stmt  (29)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 102
	literals  goto 63
	primitives  goto 64


state 75
	stmt : WHILE LPAREN . expr RPAREN stmt  (30)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 103
	literals  goto 63
	primitives  goto 64


state 76
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	expr : NOT expr .  (50)

	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 50
	RPAREN  reduce 50
	RBRACK  reduce 50
	ASSIGN  reduce 50


state 77
	expr : ID LPAREN . actuals_opt RPAREN  (33)
	actuals_opt : .  (69)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	RPAREN  reduce 69

	expr  goto 104
	literals  goto 63
	actuals_opt  goto 105
	primitives  goto 64
	actuals_list  goto 106


state 78
	expr : ID LBRACK . expr RBRACK  (54)
	expr : ID LBRACK . expr RBRACK LBRACK expr RBRACK  (55)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 107
	literals  goto 63
	primitives  goto 64


state 79
	expr : ID DOT . LENGTH  (56)

	LENGTH  shift 108
	.  error


state 80
	stmt : expr SEMI .  (24)

	.  reduce 24


state 81
	expr : expr PLUS . expr  (35)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 109
	literals  goto 63
	primitives  goto 64


state 82
	expr : expr MINUS . expr  (36)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 110
	literals  goto 63
	primitives  goto 64


state 83
	expr : expr TIMES . expr  (37)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 111
	literals  goto 63
	primitives  goto 64


state 84
	expr : expr DIVIDE . expr  (38)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 112
	literals  goto 63
	primitives  goto 64


state 85
	expr : expr EXP . expr  (45)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 113
	literals  goto 63
	primitives  goto 64


state 86
	expr : expr EQ . expr  (39)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 114
	literals  goto 63
	primitives  goto 64


state 87
	expr : expr NEQ . expr  (40)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 115
	literals  goto 63
	primitives  goto 64


state 88
	expr : expr LT . expr  (41)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 116
	literals  goto 63
	primitives  goto 64


state 89
	expr : expr LEQ . expr  (42)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 117
	literals  goto 63
	primitives  goto 64


state 90
	expr : expr GT . expr  (43)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 118
	literals  goto 63
	primitives  goto 64


state 91
	expr : expr GEQ . expr  (44)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 119
	literals  goto 63
	primitives  goto 64


state 92
	expr : expr ASSIGN . expr  (48)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 120
	literals  goto 63
	primitives  goto 64


state 93
	expr : expr AND . expr  (46)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 121
	literals  goto 63
	primitives  goto 64


state 94
	expr : expr OR . expr  (47)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 122
	literals  goto 63
	primitives  goto 64


state 95
	expr : LPAREN expr RPAREN .  (34)

	.  reduce 34


state 96
	stmt : LBRACE stmt_list RBRACE .  (27)

	.  reduce 27


state 97
	literals : LBRACK primitive_arraylit RBRACK .  (61)

	.  reduce 61


state 98
	primitive_arraylit : primitive_arraylit COMMA . primitives  (64)

	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	FLOATLITERAL  shift 60
	.  error

	primitives  goto 123


state 99
	primitive_matrixlit : primitive_matrixlit BAR . primitive_arraylit  (66)

	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	FLOATLITERAL  shift 60
	.  error

	primitives  goto 67
	primitive_arraylit  goto 124


state 100
	literals : LMATBRACK primitive_matrixlit RMATBRACK .  (62)

	.  reduce 62


state 101
	stmt : RETURN expr SEMI .  (26)

	.  reduce 26


state 102
	stmt : IF LPAREN expr . RPAREN stmt  (28)
	stmt : IF LPAREN expr . RPAREN stmt ELSE stmt  (29)
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	RPAREN  shift 125
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 103
	stmt : WHILE LPAREN expr . RPAREN stmt  (30)
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	RPAREN  shift 126
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 104
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	actuals_list : expr .  (71)

	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	RPAREN  reduce 71


state 105
	expr : ID LPAREN actuals_opt . RPAREN  (33)

	RPAREN  shift 127
	.  error


state 106
	actuals_opt : actuals_list .  (70)

	.  reduce 70


state 107
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	expr : ID LBRACK expr . RBRACK  (54)
	expr : ID LBRACK expr . RBRACK LBRACK expr RBRACK  (55)

	RBRACK  shift 128
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 108
	expr : ID DOT LENGTH .  (56)

	.  reduce 56


state 109
	expr : expr . PLUS expr  (35)
	expr : expr PLUS expr .  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	TIMES  shift 83
	DIVIDE  shift 84
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 35
	RPAREN  reduce 35
	RBRACK  reduce 35
	PLUS  reduce 35
	MINUS  reduce 35
	EXP  reduce 35
	ASSIGN  reduce 35


state 110
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr MINUS expr .  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	TIMES  shift 83
	DIVIDE  shift 84
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 36
	RPAREN  reduce 36
	RBRACK  reduce 36
	PLUS  reduce 36
	MINUS  reduce 36
	EXP  reduce 36
	ASSIGN  reduce 36


state 111
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr TIMES expr .  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 37
	RPAREN  reduce 37
	RBRACK  reduce 37
	PLUS  reduce 37
	MINUS  reduce 37
	TIMES  reduce 37
	DIVIDE  reduce 37
	EXP  reduce 37
	ASSIGN  reduce 37


state 112
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr DIVIDE expr .  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 38
	RPAREN  reduce 38
	RBRACK  reduce 38
	PLUS  reduce 38
	MINUS  reduce 38
	TIMES  reduce 38
	DIVIDE  reduce 38
	EXP  reduce 38
	ASSIGN  reduce 38


state 113
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr EXP expr .  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 45
	RPAREN  reduce 45
	RBRACK  reduce 45
	ASSIGN  reduce 45


state 114
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr EQ expr .  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 39
	RPAREN  reduce 39
	RBRACK  reduce 39
	PLUS  reduce 39
	MINUS  reduce 39
	TIMES  reduce 39
	DIVIDE  reduce 39
	EXP  reduce 39
	EQ  reduce 39
	NEQ  reduce 39
	ASSIGN  reduce 39


state 115
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr NEQ expr .  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	AND  shift 93
	OR  shift 94
	SEMI  reduce 40
	RPAREN  reduce 40
	RBRACK  reduce 40
	PLUS  reduce 40
	MINUS  reduce 40
	TIMES  reduce 40
	DIVIDE  reduce 40
	EXP  reduce 40
	EQ  reduce 40
	NEQ  reduce 40
	ASSIGN  reduce 40


state 116
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr LT expr .  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	AND  shift 93
	OR  shift 94
	SEMI  reduce 41
	RPAREN  reduce 41
	RBRACK  reduce 41
	PLUS  reduce 41
	MINUS  reduce 41
	TIMES  reduce 41
	DIVIDE  reduce 41
	EXP  reduce 41
	EQ  reduce 41
	NEQ  reduce 41
	LT  reduce 41
	LEQ  reduce 41
	GT  reduce 41
	GEQ  reduce 41
	ASSIGN  reduce 41


state 117
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr LEQ expr .  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	AND  shift 93
	OR  shift 94
	SEMI  reduce 42
	RPAREN  reduce 42
	RBRACK  reduce 42
	PLUS  reduce 42
	MINUS  reduce 42
	TIMES  reduce 42
	DIVIDE  reduce 42
	EXP  reduce 42
	EQ  reduce 42
	NEQ  reduce 42
	LT  reduce 42
	LEQ  reduce 42
	GT  reduce 42
	GEQ  reduce 42
	ASSIGN  reduce 42


state 118
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr GT expr .  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	AND  shift 93
	OR  shift 94
	SEMI  reduce 43
	RPAREN  reduce 43
	RBRACK  reduce 43
	PLUS  reduce 43
	MINUS  reduce 43
	TIMES  reduce 43
	DIVIDE  reduce 43
	EXP  reduce 43
	EQ  reduce 43
	NEQ  reduce 43
	LT  reduce 43
	LEQ  reduce 43
	GT  reduce 43
	GEQ  reduce 43
	ASSIGN  reduce 43


state 119
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr GEQ expr .  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	AND  shift 93
	OR  shift 94
	SEMI  reduce 44
	RPAREN  reduce 44
	RBRACK  reduce 44
	PLUS  reduce 44
	MINUS  reduce 44
	TIMES  reduce 44
	DIVIDE  reduce 44
	EXP  reduce 44
	EQ  reduce 44
	NEQ  reduce 44
	LT  reduce 44
	LEQ  reduce 44
	GT  reduce 44
	GEQ  reduce 44
	ASSIGN  reduce 44


state 120
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	expr : expr ASSIGN expr .  (48)

	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	SEMI  reduce 48
	RPAREN  reduce 48
	RBRACK  reduce 48


state 121
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr AND expr .  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)

	.  reduce 46


state 122
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr OR expr .  (47)
	expr : expr . ASSIGN expr  (48)

	.  reduce 47


state 123
	primitive_arraylit : primitive_arraylit COMMA primitives .  (64)

	.  reduce 64


state 124
	primitive_arraylit : primitive_arraylit . COMMA primitives  (64)
	primitive_matrixlit : primitive_matrixlit BAR primitive_arraylit .  (66)

	COMMA  shift 98
	BAR  reduce 66
	RMATBRACK  reduce 66


state 125
	stmt : IF LPAREN expr RPAREN . stmt  (28)
	stmt : IF LPAREN expr RPAREN . stmt ELSE stmt  (29)

	LPAREN  shift 44
	LBRACE  shift 45
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	RETURN  shift 52
	NULL  shift 53
	IF  shift 54
	WHILE  shift 55
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	stmt  goto 129
	expr  goto 62
	literals  goto 63
	primitives  goto 64


state 126
	stmt : WHILE LPAREN expr RPAREN . stmt  (30)

	LPAREN  shift 44
	LBRACE  shift 45
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	RETURN  shift 52
	NULL  shift 53
	IF  shift 54
	WHILE  shift 55
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	stmt  goto 130
	expr  goto 62
	literals  goto 63
	primitives  goto 64


state 127
	expr : ID LPAREN actuals_opt RPAREN .  (33)

	.  reduce 33


state 128
	expr : ID LBRACK expr RBRACK .  (54)
	expr : ID LBRACK expr RBRACK . LBRACK expr RBRACK  (55)

	LBRACK  shift 131
	SEMI  reduce 54
	RPAREN  reduce 54
	RBRACK  reduce 54
	PLUS  reduce 54
	MINUS  reduce 54
	TIMES  reduce 54
	DIVIDE  reduce 54
	EXP  reduce 54
	EQ  reduce 54
	NEQ  reduce 54
	LT  reduce 54
	LEQ  reduce 54
	GT  reduce 54
	GEQ  reduce 54
	ASSIGN  reduce 54
	AND  reduce 54
	OR  reduce 54


state 129
	stmt : IF LPAREN expr RPAREN stmt .  (28)
	stmt : IF LPAREN expr RPAREN stmt . ELSE stmt  (29)

	ELSE  shift 132
	LPAREN  reduce 28
	LBRACE  reduce 28
	RBRACE  reduce 28
	LBRACK  reduce 28
	LMATBRACK  reduce 28
	TRUE  reduce 28
	FALSE  reduce 28
	MINUS  reduce 28
	RETURN  reduce 28
	NULL  reduce 28
	IF  reduce 28
	WHILE  reduce 28
	NOT  reduce 28
	INTLITERAL  reduce 28
	STRINGLITERAL  reduce 28
	ID  reduce 28
	FLOATLITERAL  reduce 28


state 130
	stmt : WHILE LPAREN expr RPAREN stmt .  (30)

	.  reduce 30


state 131
	expr : ID LBRACK expr RBRACK LBRACK . expr RBRACK  (55)

	LPAREN  shift 44
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	NULL  shift 53
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	expr  goto 133
	literals  goto 63
	primitives  goto 64


state 132
	stmt : IF LPAREN expr RPAREN stmt ELSE . stmt  (29)

	LPAREN  shift 44
	LBRACE  shift 45
	LBRACK  shift 47
	LMATBRACK  shift 48
	TRUE  shift 49
	FALSE  shift 50
	MINUS  shift 51
	RETURN  shift 52
	NULL  shift 53
	IF  shift 54
	WHILE  shift 55
	NOT  shift 56
	INTLITERAL  shift 57
	STRINGLITERAL  shift 58
	ID  shift 59
	FLOATLITERAL  shift 60
	.  error

	stmt  goto 134
	expr  goto 62
	literals  goto 63
	primitives  goto 64


state 133
	expr : expr . PLUS expr  (35)
	expr : expr . MINUS expr  (36)
	expr : expr . TIMES expr  (37)
	expr : expr . DIVIDE expr  (38)
	expr : expr . EQ expr  (39)
	expr : expr . NEQ expr  (40)
	expr : expr . LT expr  (41)
	expr : expr . LEQ expr  (42)
	expr : expr . GT expr  (43)
	expr : expr . GEQ expr  (44)
	expr : expr . EXP expr  (45)
	expr : expr . AND expr  (46)
	expr : expr . OR expr  (47)
	expr : expr . ASSIGN expr  (48)
	expr : ID LBRACK expr RBRACK LBRACK expr . RBRACK  (55)

	RBRACK  shift 135
	PLUS  shift 81
	MINUS  shift 82
	TIMES  shift 83
	DIVIDE  shift 84
	EXP  shift 85
	EQ  shift 86
	NEQ  shift 87
	LT  shift 88
	LEQ  shift 89
	GT  shift 90
	GEQ  shift 91
	ASSIGN  shift 92
	AND  shift 93
	OR  shift 94
	.  error


state 134
	stmt : IF LPAREN expr RPAREN stmt ELSE stmt .  (29)

	.  reduce 29


state 135
	expr : ID LBRACK expr RBRACK LBRACK expr RBRACK .  (55)

	.  reduce 55


Rules never reduced:
	expr_opt :  (67)
	expr_opt : expr  (68)


54 terminals, 22 nonterminals
73 grammar rules, 136 states
