exception Error
type token =
| WRITELN
| WRITE
| WHILE
| VAR
| TIMES
| THEN
| SLASH
| SEMICOLON
| RPAREN
| READLN
| RBRACKET
| PROGRAM
| PROCEDURE
| PLUS
| OR
| OF
| NOT
| NEW
| NE
| MINUS
| LT
| LPAREN
| LE
| LBRACKET
| INTEGER
| INTCONST of (int32)
| IF
| ID of (string Location.t)
| GT
| GE
| FUNCTION
| EQ
| END
| ELSE
| DOT
| DO
| COMMA
| COLONEQ
| COLON
| BOOLEAN
| BOOLCONST of (bool)
| BEGIN
| ARRAY
| AND
and _menhir_env = {
_menhir_lexer: Lexing.lexbuf -> token;
_menhir_lexbuf: Lexing.lexbuf;
mutable _menhir_token: token;
mutable _menhir_startp: Lexing.position;
mutable _menhir_endp: Lexing.position;
mutable _menhir_shifted: int
}
and _menhir_state =
| MenhirState142
| MenhirState140
| MenhirState137
| MenhirState136
| MenhirState134
| MenhirState131
| MenhirState127
| MenhirState120
| MenhirState112
| MenhirState109
| MenhirState106
| MenhirState102
| MenhirState99
| MenhirState97
| MenhirState95
| MenhirState94
| MenhirState90
| MenhirState86
| MenhirState81
| MenhirState74
| MenhirState72
| MenhirState70
| MenhirState68
| MenhirState66
| MenhirState64
| MenhirState62
| MenhirState60
| MenhirState58
| MenhirState55
| MenhirState53
| MenhirState51
| MenhirState46
| MenhirState40
| MenhirState39
| MenhirState38
| MenhirState36
| MenhirState33
| MenhirState31
| MenhirState28
| MenhirState27
| MenhirState26
| MenhirState22
| MenhirState19
| MenhirState17
| MenhirState12
| MenhirState8
| MenhirState4
| MenhirState2
| MenhirState1
open MIPSOps
open LPP
open Primitive
let _eRR =
Error
let rec _menhir_reduce4 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.condition) -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let (_menhir_stack, _menhir_s, c) = _menhir_stack in
let _v : (LPP.condition) = ( c ) in
_menhir_goto_condition _menhir_env _menhir_stack _menhir_s _v
and _menhir_goto_nontrivial_condition : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.condition) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState81 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos__3_ = _endpos in
let ((_menhir_stack, _menhir_s, _startpos__1_), _, c) = _menhir_stack in
let _v : (LPP.condition) = ( c ) in
_menhir_goto_nontrivial_condition _menhir_env _menhir_stack _menhir_s _v
| AND | OR ->
_menhir_reduce4 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState95 | MenhirState31 | MenhirState33 | MenhirState90 | MenhirState86 ->
let _menhir_stack = Obj.magic _menhir_stack in
_menhir_reduce4 _menhir_env (Obj.magic _menhir_stack)
| _ ->
_menhir_fail ()
and _menhir_run86 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.condition) -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState86
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState86 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState86
and _menhir_run90 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.condition) -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState90
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState90 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState90
and _menhir_reduce51 : _menhir_env -> ((('ttv_tail * _menhir_state * (Primitive.callee) * Lexing.position) * Lexing.position) * _menhir_state * (LPP.expression list)) * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let ((((_menhir_stack, _menhir_s, c0, _startpos_c0_), _startpos__menhir_p0_), _, xs0), _endpos__4_) = _menhir_stack in
let _menhir_p0 = () in
let _startpos = _startpos_c0_ in
let _endpos = _endpos__4_ in
let _v : (LPP.raw_expression) = let actuals =
let xs = xs0 in
( xs )
in
let c =
let _endpos = _startpos__menhir_p0_ in
let c = c0 in
( Location.make _startpos _endpos c )
in
( EFunCall (c, actuals) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_goto_condition : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.condition) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState81 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| AND ->
_menhir_run90 _menhir_env (Obj.magic _menhir_stack)
| OR ->
_menhir_run86 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState86 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| AND ->
_menhir_run90 _menhir_env (Obj.magic _menhir_stack)
| DO | OR | RPAREN | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, c1), _, c2) = _menhir_stack in
let _v : (LPP.condition) = ( COr (c1, c2) ) in
_menhir_goto_nontrivial_condition _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState90 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, c1), _, c2) = _menhir_stack in
let _v : (LPP.condition) = ( CAnd (c1, c2) ) in
_menhir_goto_nontrivial_condition _menhir_env _menhir_stack _menhir_s _v
| MenhirState33 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s), _, c) = _menhir_stack in
let _v : (LPP.condition) = ( CNot c ) in
_menhir_goto_nontrivial_condition _menhir_env _menhir_stack _menhir_s _v
| MenhirState31 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| AND ->
_menhir_run90 _menhir_env (Obj.magic _menhir_stack)
| DO ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState94
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run98 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| IF ->
_menhir_run95 _menhir_env (Obj.magic _menhir_stack) MenhirState94
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| WHILE ->
_menhir_run31 _menhir_env (Obj.magic _menhir_stack) MenhirState94
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState94 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState94)
| OR ->
_menhir_run86 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState95 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| AND ->
_menhir_run90 _menhir_env (Obj.magic _menhir_stack)
| OR ->
_menhir_run86 _menhir_env (Obj.magic _menhir_stack)
| THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState97
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run98 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| IF ->
_menhir_run95 _menhir_env (Obj.magic _menhir_stack) MenhirState97
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| WHILE ->
_menhir_run31 _menhir_env (Obj.magic _menhir_stack) MenhirState97
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState97 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState97)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_loption_separated_nonempty_list_COMMA_expression__ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.expression list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState46 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _ = _menhir_discard _menhir_env in
_menhir_reduce51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState102 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| EQ | GE | GT | LBRACKET | LE | LT | MINUS | NE | PLUS | SLASH | TIMES ->
_menhir_reduce51 _menhir_env (Obj.magic _menhir_stack)
| ELSE | END | SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((((_menhir_stack, _menhir_s, c0, _startpos_c0_), _startpos__menhir_p0_), _, xs0), _endpos__4_) = _menhir_stack in
let _menhir_p0 = () in
let _startpos = _startpos_c0_ in
let _v : (LPP.instruction) = let actuals =
let xs = xs0 in
( xs )
in
let callee =
let _endpos = _startpos__menhir_p0_ in
let c = c0 in
( Location.make _startpos _endpos c )
in
( IProcCall (callee, actuals) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_reduce3 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let (_menhir_stack, _menhir_s, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _v : (LPP.condition) = ( CExpression e ) in
_menhir_goto_condition _menhir_env _menhir_stack _menhir_s _v
and _menhir_run77 : _menhir_env -> ('ttv_tail * _menhir_state * Lexing.position) * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _endpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos__3_ = _endpos in
let ((_menhir_stack, _menhir_s, _startpos__1_), _, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _startpos = _startpos__1_ in
let _endpos = _endpos__3_ in
let _v : (LPP.expression) = ( e ) in
_menhir_goto_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_reduce52 : _menhir_env -> (('ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position) * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position) * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let (((_menhir_stack, _menhir_s, a, _startpos_a_, _endpos_a_), _, i, _startpos_i_, _endpos_i_), _endpos__4_) = _menhir_stack in
let _startpos = _startpos_a_ in
let _endpos = _endpos__4_ in
let _v : (LPP.raw_expression) = ( EArrayGet (a, i) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_goto_separated_nonempty_list_COMMA_expression_ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.expression list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
match _menhir_s with
| MenhirState102 | MenhirState46 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let x = _v in
let _v : (LPP.expression list) = ( x ) in
_menhir_goto_loption_separated_nonempty_list_COMMA_expression__ _menhir_env _menhir_stack _menhir_s _v
| MenhirState74 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let xs = _v in
let (_menhir_stack, _menhir_s, x, _startpos_x_, _endpos_x_) = _menhir_stack in
let _v : (LPP.expression list) = ( x :: xs ) in
_menhir_goto_separated_nonempty_list_COMMA_expression_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
_menhir_fail ()
and _menhir_run51 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState51 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState51
and _menhir_run55 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState55 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState55
and _menhir_run58 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState58 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState58
and _menhir_run60 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState60 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState60
and _menhir_run62 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _startpos ->
let _menhir_stack = (_menhir_stack, _startpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState62 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState62
and _menhir_run64 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState64 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState64
and _menhir_run66 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState66 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState66
and _menhir_run53 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState53 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState53
and _menhir_run68 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState68 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState68
and _menhir_run70 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState70 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState70
and _menhir_run72 : _menhir_env -> 'ttv_tail * _menhir_state * (LPP.expression) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState72 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState72
and _menhir_goto_separated_nonempty_list_SEMICOLON_instruction_ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.instruction list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
match _menhir_s with
| MenhirState28 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let x = _v in
let _v : (LPP.instruction list) = ( x ) in
_menhir_goto_loption_separated_nonempty_list_SEMICOLON_instruction__ _menhir_env _menhir_stack _menhir_s _v
| MenhirState120 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let xs = _v in
let (_menhir_stack, _menhir_s, x) = _menhir_stack in
let _v : (LPP.instruction list) = ( x :: xs ) in
_menhir_goto_separated_nonempty_list_SEMICOLON_instruction_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
_menhir_fail ()
and _menhir_reduce18 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _v : (LPP.expression list) = ( [] ) in
_menhir_goto_loption_separated_nonempty_list_COMMA_expression__ _menhir_env _menhir_stack _menhir_s _v
and _menhir_goto_expression : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.expression) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v, _startpos, _endpos) in
match _menhir_s with
| MenhirState102 | MenhirState74 | MenhirState46 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| COMMA ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState74 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState74)
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, x, _startpos_x_, _endpos_x_) = _menhir_stack in
let _v : (LPP.expression list) = ( [ x ] ) in
_menhir_goto_separated_nonempty_list_COMMA_expression_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState51 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | SLASH | THEN | TIMES ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpMul )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState53 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| RBRACKET ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _ = _menhir_discard _menhir_env in
_menhir_reduce52 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState55 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | SLASH | THEN | TIMES ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpDiv )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState58 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpAdd )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState60 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpNe )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState62 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _startpos__2_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpSub )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState64 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpLt )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState66 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpLe )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState68 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpGt )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState70 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpGe )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState72 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | OR | RBRACKET | RPAREN | SEMICOLON | THEN ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, e1, _startpos_e1_, _endpos_e1_), _, e2, _startpos_e2_, _endpos_e2_) = _menhir_stack in
let _startpos = _startpos_e1_ in
let _endpos = _endpos_e2_ in
let _v : (LPP.raw_expression) = let op =
( OpEq )
in
( EBinOp (op, e1, e2) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState40 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| RPAREN ->
_menhir_run77 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_endp
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState39 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | SLASH | THEN | TIMES ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _startpos__1_), _, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _startpos = _startpos__1_ in
let _endpos = _endpos_e_ in
let _v : (LPP.raw_expression) = ( EUnOp (UOpNeg, e) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState38 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| RBRACKET ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos__7_ = _endpos in
let (((_menhir_stack, _menhir_s, _startpos__1_), _, t), _, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _startpos = _startpos__1_ in
let _endpos = _endpos__7_ in
let _v : (LPP.raw_expression) = ( EArrayAlloc (t, e) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState81 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| RPAREN ->
_menhir_run77 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_endp
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | OR ->
_menhir_reduce3 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState95 | MenhirState31 | MenhirState33 | MenhirState90 | MenhirState86 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| AND | DO | OR | RPAREN | THEN ->
_menhir_reduce3 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState99 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| ELSE | END | SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, id, _startpos_id_, _endpos_id_), _, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _v : (LPP.instruction) = ( ISetVar (id, e) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState28 | MenhirState120 | MenhirState94 | MenhirState97 | MenhirState106 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState109 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState109)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState109 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| RBRACKET ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| COLONEQ ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState112 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState112)
| EQ | GE | GT | LBRACKET | LE | LT | MINUS | NE | PLUS | SLASH | TIMES ->
_menhir_reduce52 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState112 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| EQ ->
_menhir_run72 _menhir_env (Obj.magic _menhir_stack)
| GE ->
_menhir_run70 _menhir_env (Obj.magic _menhir_stack)
| GT ->
_menhir_run68 _menhir_env (Obj.magic _menhir_stack)
| LBRACKET ->
_menhir_run53 _menhir_env (Obj.magic _menhir_stack)
| LE ->
_menhir_run66 _menhir_env (Obj.magic _menhir_stack)
| LT ->
_menhir_run64 _menhir_env (Obj.magic _menhir_stack)
| MINUS ->
_menhir_run62 _menhir_env (Obj.magic _menhir_stack) _menhir_env._menhir_startp
| NE ->
_menhir_run60 _menhir_env (Obj.magic _menhir_stack)
| PLUS ->
_menhir_run58 _menhir_env (Obj.magic _menhir_stack)
| SLASH ->
_menhir_run55 _menhir_env (Obj.magic _menhir_stack)
| TIMES ->
_menhir_run51 _menhir_env (Obj.magic _menhir_stack)
| ELSE | END | SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((((_menhir_stack, _menhir_s, a, _startpos_a_, _endpos_a_), _, i, _startpos_i_, _endpos_i_), _endpos__4_), _, e, _startpos_e_, _endpos_e_) = _menhir_stack in
let _v : (LPP.instruction) = ( IArraySet (a, i, e) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_separated_nonempty_list_SEMICOLON_binding_ : _menhir_env -> 'ttv_tail -> _menhir_state -> ((LPP.identifier * LPP.typ) list list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
match _menhir_s with
| MenhirState131 | MenhirState22 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let x = _v in
let _v : ((LPP.identifier * LPP.typ) list list) = ( x ) in
_menhir_goto_loption_separated_nonempty_list_SEMICOLON_binding__ _menhir_env _menhir_stack _menhir_s _v
| MenhirState127 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let xs = _v in
let (_menhir_stack, _menhir_s, x) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list list) = ( x :: xs ) in
_menhir_goto_separated_nonempty_list_SEMICOLON_binding_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
_menhir_fail ()
and _menhir_goto_nonempty_list_terminated_binding_SEMICOLON__ : _menhir_env -> 'ttv_tail -> _menhir_state -> ((LPP.identifier * LPP.typ) list list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
match _menhir_s with
| MenhirState2 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let bindings = _v in
let _v : ((LPP.identifier * LPP.typ) list) = ( List.flatten bindings ) in
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let x0 = _v in
let (_menhir_stack, _menhir_s) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list) = let x =
let x = x0 in
( x )
in
( x ) in
_menhir_goto_loption_preceded_VAR_terminated_bindings__ _menhir_env _menhir_stack _menhir_s _v
| MenhirState17 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let xs = _v in
let (_menhir_stack, _menhir_s, x0) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list list) = let x =
let x = x0 in
( x )
in
( x :: xs ) in
_menhir_goto_nonempty_list_terminated_binding_SEMICOLON__ _menhir_env _menhir_stack _menhir_s _v
| _ ->
_menhir_fail ()
and _menhir_goto_procedure : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.identifier * LPP.procedure) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
match _tok with
| FUNCTION ->
_menhir_run129 _menhir_env (Obj.magic _menhir_stack) MenhirState140
| PROCEDURE ->
_menhir_run20 _menhir_env (Obj.magic _menhir_stack) MenhirState140
| BEGIN ->
_menhir_reduce14 _menhir_env (Obj.magic _menhir_stack) MenhirState140
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState140
and _menhir_goto_instruction : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.instruction) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState97 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| ELSE ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState106
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run98 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| IF ->
_menhir_run95 _menhir_env (Obj.magic _menhir_stack) MenhirState106
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| WHILE ->
_menhir_run31 _menhir_env (Obj.magic _menhir_stack) MenhirState106
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState106 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState106)
| END | SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _menhir_s), _, c), _, b) = _menhir_stack in
let _v : (LPP.instruction) = ( IIf (c, b, ISeq []) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState106 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((((_menhir_stack, _menhir_s), _, c), _, b1), _, b2) = _menhir_stack in
let _v : (LPP.instruction) = ( IIf (c, b1, b2) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| MenhirState94 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _menhir_s), _, c), _, b) = _menhir_stack in
let _v : (LPP.instruction) = ( IWhile (c, b) ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| MenhirState120 | MenhirState28 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState120
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run98 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| IF ->
_menhir_run95 _menhir_env (Obj.magic _menhir_stack) MenhirState120
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| WHILE ->
_menhir_run31 _menhir_env (Obj.magic _menhir_stack) MenhirState120
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState120 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState120)
| END ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, x) = _menhir_stack in
let _v : (LPP.instruction list) = ( [ x ] ) in
_menhir_goto_separated_nonempty_list_SEMICOLON_instruction_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_raw_callee : _menhir_env -> 'ttv_tail -> _menhir_state -> (Primitive.callee) -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v, _startpos) in
match _menhir_s with
| MenhirState112 | MenhirState109 | MenhirState102 | MenhirState99 | MenhirState95 | MenhirState31 | MenhirState33 | MenhirState90 | MenhirState86 | MenhirState81 | MenhirState38 | MenhirState39 | MenhirState74 | MenhirState72 | MenhirState70 | MenhirState68 | MenhirState66 | MenhirState64 | MenhirState62 | MenhirState60 | MenhirState58 | MenhirState55 | MenhirState53 | MenhirState51 | MenhirState46 | MenhirState40 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _menhir_stack = (_menhir_stack, _startpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState46 _menhir_env._menhir_startp
| RPAREN ->
_menhir_reduce18 _menhir_env (Obj.magic _menhir_stack) MenhirState46
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState46)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState120 | MenhirState28 | MenhirState94 | MenhirState106 | MenhirState97 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _menhir_stack = (_menhir_stack, _startpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState102 _menhir_env._menhir_startp
| RPAREN ->
_menhir_reduce18 _menhir_env (Obj.magic _menhir_stack) MenhirState102
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState102)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_run33 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState33
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState33 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState33
and _menhir_run81 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _startpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState81
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState81 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState81
and _menhir_reduce36 : _menhir_env -> 'ttv_tail * _menhir_state * (string Location.t) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let (_menhir_stack, _menhir_s, id, _startpos_id_, _endpos_id_) = _menhir_stack in
let _startpos = _startpos_id_ in
let _v : (Primitive.callee) = ( CUserFunction (Location.content id) ) in
_menhir_goto_raw_callee _menhir_env _menhir_stack _menhir_s _v _startpos
and _menhir_reduce39 : _menhir_env -> 'ttv_tail * _menhir_state * (string Location.t) * Lexing.position * Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack ->
let (_menhir_stack, _menhir_s, id, _startpos_id_, _endpos_id_) = _menhir_stack in
let _startpos = _startpos_id_ in
let _endpos = _endpos_id_ in
let _v : (LPP.raw_expression) = ( EGetVar id ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_run42 : _menhir_env -> 'ttv_tail -> _menhir_state -> (string Location.t) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v, _startpos, _endpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| AND | COMMA | DO | ELSE | END | EQ | GE | GT | LBRACKET | LE | LT | MINUS | NE | OR | PLUS | RBRACKET | RPAREN | SEMICOLON | SLASH | THEN | TIMES ->
_menhir_reduce39 _menhir_env (Obj.magic _menhir_stack)
| LPAREN ->
_menhir_reduce36 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_goto_raw_expression : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.raw_expression) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let e = _v in
let _startpos_e_ = _startpos in
let _endpos_e_ = _endpos in
let _startpos = _startpos_e_ in
let _endpos = _endpos_e_ in
let _v : (LPP.expression) = ( Location.make _startpos _endpos e ) in
_menhir_goto_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_goto_loption_separated_nonempty_list_SEMICOLON_binding__ : _menhir_env -> 'ttv_tail -> _menhir_state -> ((LPP.identifier * LPP.typ) list list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let xs0 = _v in
let _v : ((LPP.identifier * LPP.typ) list) = let bindings =
let xs = xs0 in
( xs )
in
( List.flatten bindings ) in
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState22 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| VAR ->
_menhir_run2 _menhir_env (Obj.magic _menhir_stack) MenhirState26
| BEGIN ->
_menhir_reduce16 _menhir_env (Obj.magic _menhir_stack) MenhirState26
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState26)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState131 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| COLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ARRAY ->
_menhir_run11 _menhir_env (Obj.magic _menhir_stack) MenhirState134
| BOOLEAN ->
_menhir_run10 _menhir_env (Obj.magic _menhir_stack) MenhirState134
| INTEGER ->
_menhir_run9 _menhir_env (Obj.magic _menhir_stack) MenhirState134
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState134)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_typ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.typ) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState12 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s), _, t) = _menhir_stack in
let _v : (LPP.typ) = ( TypArray t ) in
_menhir_goto_typ _menhir_env _menhir_stack _menhir_s _v
| MenhirState8 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, ids), _, t) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list) = ( List.map (fun id -> (id, t)) ids ) in
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
(match _menhir_s with
| MenhirState17 | MenhirState2 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState17 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| BEGIN | FUNCTION | PROCEDURE ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, x0) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list list) = let x =
let x = x0 in
( x )
in
( [ x ] ) in
_menhir_goto_nonempty_list_terminated_binding_SEMICOLON__ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState17)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState131 | MenhirState127 | MenhirState22 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState127 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState127)
| RPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, x) = _menhir_stack in
let _v : ((LPP.identifier * LPP.typ) list list) = ( [ x ] ) in
_menhir_goto_separated_nonempty_list_SEMICOLON_binding_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ())
| MenhirState36 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| LBRACKET ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState38 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState38)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState134 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| VAR ->
_menhir_run2 _menhir_env (Obj.magic _menhir_stack) MenhirState136
| BEGIN ->
_menhir_reduce16 _menhir_env (Obj.magic _menhir_stack) MenhirState136
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState136)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_loption_separated_nonempty_list_SEMICOLON_instruction__ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.instruction list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
match _tok with
| END ->
let _menhir_stack = Obj.magic _menhir_stack in
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s), _, xs0) = _menhir_stack in
let _v : (LPP.instruction) = let is =
let xs = xs0 in
( xs )
in
( ISeq is ) in
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
(match _menhir_s with
| MenhirState28 | MenhirState120 | MenhirState94 | MenhirState97 | MenhirState106 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, b) = _menhir_stack in
let _v : (LPP.instruction) = ( b ) in
_menhir_goto_instruction _menhir_env _menhir_stack _menhir_s _v
| MenhirState27 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let (((((((_menhir_stack, _menhir_s), f, _startpos_f_, _endpos_f_), _startpos__3_), _, formals), _endpos__5_), _, locals), _, body) = _menhir_stack in
let _v : (LPP.identifier * LPP.procedure) = let result =
( None )
in
(
f, {
formals = formals;
result = result;
locals = locals;
body = body
}
) in
_menhir_goto_procedure _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState137 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| SEMICOLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let ((((((((_menhir_stack, _menhir_s), f, _startpos_f_, _endpos_f_), _startpos__3_), _, formals), _endpos__5_), _, t0), _, locals), _, body) = _menhir_stack in
let _v : (LPP.identifier * LPP.procedure) = let result =
let t = t0 in
( Some t )
in
(
f, {
formals = formals;
result = result;
locals = locals;
body = body
}
) in
_menhir_goto_procedure _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| MenhirState142 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| DOT ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _, globals), _, defs), _, main) = _menhir_stack in
let _v : (LPP.program) = ({
globals = globals;
defs = defs;
main = main
}) in
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let _1 = _v in
Obj.magic _1
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ())
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_run29 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos__1_ = _startpos in
let _startpos = _startpos__1_ in
let _v : (Primitive.callee) = ( CPrimitiveFunction Writeln ) in
_menhir_goto_raw_callee _menhir_env _menhir_stack _menhir_s _v _startpos
and _menhir_run30 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos__1_ = _startpos in
let _startpos = _startpos__1_ in
let _v : (Primitive.callee) = ( CPrimitiveFunction Write ) in
_menhir_goto_raw_callee _menhir_env _menhir_stack _menhir_s _v _startpos
and _menhir_run31 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState31
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState31 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState31
and _menhir_run32 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos__1_ = _startpos in
let _startpos = _startpos__1_ in
let _v : (Primitive.callee) = ( CPrimitiveFunction Readln ) in
_menhir_goto_raw_callee _menhir_env _menhir_stack _menhir_s _v _startpos
and _menhir_run34 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _startpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| ARRAY ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| OF ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ARRAY ->
_menhir_run11 _menhir_env (Obj.magic _menhir_stack) MenhirState36
| BOOLEAN ->
_menhir_run10 _menhir_env (Obj.magic _menhir_stack) MenhirState36
| INTEGER ->
_menhir_run9 _menhir_env (Obj.magic _menhir_stack) MenhirState36
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState36)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_run39 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _startpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState39 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState39
and _menhir_run40 : _menhir_env -> 'ttv_tail -> _menhir_state -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _startpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _startpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState40 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState40
and _menhir_run41 : _menhir_env -> 'ttv_tail -> _menhir_state -> (int32) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let i = _v in
let _startpos_i_ = _startpos in
let _endpos_i_ = _endpos in
let _startpos = _startpos_i_ in
let _endpos = _endpos_i_ in
let _v : (LPP.raw_expression) = ( EConst (ConstInt i) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_run95 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run81 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| NOT ->
_menhir_run33 _menhir_env (Obj.magic _menhir_stack) MenhirState95
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState95 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState95
and _menhir_run98 : _menhir_env -> 'ttv_tail -> _menhir_state -> (string Location.t) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v, _startpos, _endpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| COLONEQ ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run42 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState99 _menhir_env._menhir_startp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState99)
| EQ | GE | GT | LBRACKET | LE | LT | MINUS | NE | PLUS | SLASH | TIMES ->
_menhir_reduce39 _menhir_env (Obj.magic _menhir_stack)
| LPAREN ->
_menhir_reduce36 _menhir_env (Obj.magic _menhir_stack)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_run43 : _menhir_env -> 'ttv_tail -> _menhir_state -> (bool) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let b = _v in
let _startpos_b_ = _startpos in
let _endpos_b_ = _endpos in
let _startpos = _startpos_b_ in
let _endpos = _endpos_b_ in
let _v : (LPP.raw_expression) = ( EConst (ConstBool b) ) in
_menhir_goto_raw_expression _menhir_env _menhir_stack _menhir_s _v _startpos _endpos
and _menhir_goto_list_procedure_ : _menhir_env -> 'ttv_tail -> _menhir_state -> ((LPP.identifier * LPP.procedure) list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState140 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, x), _, xs) = _menhir_stack in
let _v : ((LPP.identifier * LPP.procedure) list) = ( x :: xs ) in
_menhir_goto_list_procedure_ _menhir_env _menhir_stack _menhir_s _v
| MenhirState19 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState142
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState142)
| _ ->
_menhir_fail ()
and _menhir_reduce20 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _v : ((LPP.identifier * LPP.typ) list list) = ( [] ) in
_menhir_goto_loption_separated_nonempty_list_SEMICOLON_binding__ _menhir_env _menhir_stack _menhir_s _v
and _menhir_run9 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _v : (LPP.typ) = ( TypInt ) in
_menhir_goto_typ _menhir_env _menhir_stack _menhir_s _v
and _menhir_run10 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _ = _menhir_discard _menhir_env in
let _menhir_stack = Obj.magic _menhir_stack in
let _v : (LPP.typ) = ( TypBool ) in
_menhir_goto_typ _menhir_env _menhir_stack _menhir_s _v
and _menhir_run11 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| OF ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ARRAY ->
_menhir_run11 _menhir_env (Obj.magic _menhir_stack) MenhirState12
| BOOLEAN ->
_menhir_run10 _menhir_env (Obj.magic _menhir_stack) MenhirState12
| INTEGER ->
_menhir_run9 _menhir_env (Obj.magic _menhir_stack) MenhirState12
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState12)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_fail : unit -> 'a =
fun () ->
Printf.fprintf Pervasives.stderr "Internal failure -- please contact the parser generator's developers.\n%!";
assert false
and _menhir_run28 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState28
| BOOLCONST _v ->
_menhir_run43 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| ID _v ->
_menhir_run98 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| IF ->
_menhir_run95 _menhir_env (Obj.magic _menhir_stack) MenhirState28
| INTCONST _v ->
_menhir_run41 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| LPAREN ->
_menhir_run40 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| MINUS ->
_menhir_run39 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| NEW ->
_menhir_run34 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| READLN ->
_menhir_run32 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| WHILE ->
_menhir_run31 _menhir_env (Obj.magic _menhir_stack) MenhirState28
| WRITE ->
_menhir_run30 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| WRITELN ->
_menhir_run29 _menhir_env (Obj.magic _menhir_stack) MenhirState28 _menhir_env._menhir_startp
| END ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_s = MenhirState28 in
let _v : (LPP.instruction list) = ( [] ) in
_menhir_goto_loption_separated_nonempty_list_SEMICOLON_instruction__ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState28
and _menhir_reduce14 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _v : ((LPP.identifier * LPP.procedure) list) = ( [] ) in
_menhir_goto_list_procedure_ _menhir_env _menhir_stack _menhir_s _v
and _menhir_run20 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| ID _v ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _v, _startpos, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| LPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _menhir_stack = (_menhir_stack, _startpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState22 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| RPAREN ->
_menhir_reduce20 _menhir_env (Obj.magic _menhir_stack) MenhirState22
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState22)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s), _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_run129 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| ID _v ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _endpos = _menhir_env._menhir_endp in
let _menhir_stack = (_menhir_stack, _v, _startpos, _endpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| LPAREN ->
let _menhir_stack = Obj.magic _menhir_stack in
let _startpos = _menhir_env._menhir_startp in
let _menhir_stack = (_menhir_stack, _startpos) in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState131 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| RPAREN ->
_menhir_reduce20 _menhir_env (Obj.magic _menhir_stack) MenhirState131
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState131)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s), _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_goto_separated_nonempty_list_COMMA_ID_ : _menhir_env -> 'ttv_tail -> _menhir_state -> (LPP.identifier list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState4 ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, x, _startpos_x_, _endpos_x_), _, xs) = _menhir_stack in
let _v : (LPP.identifier list) = ( x :: xs ) in
_menhir_goto_separated_nonempty_list_COMMA_ID_ _menhir_env _menhir_stack _menhir_s _v
| MenhirState131 | MenhirState127 | MenhirState22 | MenhirState17 | MenhirState2 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| COLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ARRAY ->
_menhir_run11 _menhir_env (Obj.magic _menhir_stack) MenhirState8
| BOOLEAN ->
_menhir_run10 _menhir_env (Obj.magic _menhir_stack) MenhirState8
| INTEGER ->
_menhir_run9 _menhir_env (Obj.magic _menhir_stack) MenhirState8
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState8)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s)
| _ ->
_menhir_fail ()
and _menhir_goto_loption_preceded_VAR_terminated_bindings__ : _menhir_env -> 'ttv_tail -> _menhir_state -> ((LPP.identifier * LPP.typ) list) -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v ->
let _menhir_stack = Obj.magic _menhir_stack in
let _menhir_stack = Obj.magic _menhir_stack in
let vars = _v in
let _v : ((LPP.identifier * LPP.typ) list) = ( vars ) in
let _menhir_stack = (_menhir_stack, _menhir_s, _v) in
match _menhir_s with
| MenhirState1 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| FUNCTION ->
_menhir_run129 _menhir_env (Obj.magic _menhir_stack) MenhirState19
| PROCEDURE ->
_menhir_run20 _menhir_env (Obj.magic _menhir_stack) MenhirState19
| BEGIN ->
_menhir_reduce14 _menhir_env (Obj.magic _menhir_stack) MenhirState19
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState19)
| MenhirState26 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState27
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState27)
| MenhirState136 ->
let _menhir_stack = Obj.magic _menhir_stack in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
(match _tok with
| BEGIN ->
_menhir_run28 _menhir_env (Obj.magic _menhir_stack) MenhirState137
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState137)
| _ ->
_menhir_fail ()
and _menhir_run3 : _menhir_env -> 'ttv_tail -> _menhir_state -> (string Location.t) -> Lexing.position -> Lexing.position -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s _v _startpos _endpos ->
let _menhir_stack = (_menhir_stack, _menhir_s, _v, _startpos, _endpos) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| COMMA ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState4 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState4)
| COLON ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, x, _startpos_x_, _endpos_x_) = _menhir_stack in
let _v : (LPP.identifier list) = ( [ x ] ) in
_menhir_goto_separated_nonempty_list_COMMA_ID_ _menhir_env _menhir_stack _menhir_s _v
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
and _menhir_errorcase : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
match _menhir_s with
| MenhirState142 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState140 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState137 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState136 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState134 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState131 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _menhir_s), _, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState127 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState120 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState112 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState109 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState106 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState102 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState99 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState97 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState95 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState94 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState90 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState86 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState81 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState74 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState72 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState70 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState68 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState66 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState64 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState62 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState60 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState58 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState55 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState53 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState51 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState46 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState40 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState39 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState38 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState36 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState33 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState31 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState28 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState27 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState26 ->
let _menhir_stack = Obj.magic _menhir_stack in
let ((_menhir_stack, _menhir_s, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState22 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (((_menhir_stack, _menhir_s), _, _, _), _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState19 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState17 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState12 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState8 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState4 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s, _, _, _) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState2 ->
let _menhir_stack = Obj.magic _menhir_stack in
let (_menhir_stack, _menhir_s) = _menhir_stack in
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) _menhir_s
| MenhirState1 ->
let _menhir_stack = Obj.magic _menhir_stack in
raise _eRR
and _menhir_reduce16 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _v : ((LPP.identifier * LPP.typ) list) = ( [] ) in
_menhir_goto_loption_preceded_VAR_terminated_bindings__ _menhir_env _menhir_stack _menhir_s _v
and _menhir_run2 : _menhir_env -> 'ttv_tail -> _menhir_state -> 'ttv_return =
fun _menhir_env _menhir_stack _menhir_s ->
let _menhir_stack = (_menhir_stack, _menhir_s) in
let _tok = _menhir_discard _menhir_env in
match _tok with
| ID _v ->
_menhir_run3 _menhir_env (Obj.magic _menhir_stack) MenhirState2 _v _menhir_env._menhir_startp _menhir_env._menhir_endp
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState2
and _menhir_discard : _menhir_env -> token =
fun _menhir_env ->
let lexbuf = _menhir_env._menhir_lexbuf in
let _tok = _menhir_env._menhir_lexer lexbuf in
_menhir_env._menhir_token <- _tok;
_menhir_env._menhir_startp <- lexbuf.Lexing.lex_start_p;
_menhir_env._menhir_endp <- lexbuf.Lexing.lex_curr_p;
let shifted = Pervasives.(+) _menhir_env._menhir_shifted 1 in
if Pervasives.(>=) shifted 0 then
_menhir_env._menhir_shifted <- shifted;
_tok
and program : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (LPP.program) =
fun lexer lexbuf ->
let _menhir_env = let _tok = lexer lexbuf in
{
_menhir_lexer = lexer;
_menhir_lexbuf = lexbuf;
_menhir_token = _tok;
_menhir_startp = lexbuf.Lexing.lex_start_p;
_menhir_endp = lexbuf.Lexing.lex_curr_p;
_menhir_shifted = max_int;
} in
Obj.magic (let _menhir_stack = () in
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
let _tok = _menhir_env._menhir_token in
match _tok with
| PROGRAM ->
let _menhir_stack = Obj.magic _menhir_stack in
let _tok = _menhir_discard _menhir_env in
(match _tok with
| VAR ->
_menhir_run2 _menhir_env (Obj.magic _menhir_stack) MenhirState1
| BEGIN | FUNCTION | PROCEDURE ->
_menhir_reduce16 _menhir_env (Obj.magic _menhir_stack) MenhirState1
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
_menhir_errorcase _menhir_env (Obj.magic _menhir_stack) MenhirState1)
| _ ->
assert (Pervasives.(<>) _menhir_env._menhir_shifted (-1));
_menhir_env._menhir_shifted <- (-1);
let _menhir_stack = Obj.magic _menhir_stack in
raise _eRR)