type token = | IF of (Support.Error.info) | THEN of (Support.Error.info) | ELSE of (Support.Error.info) | TRUE of (Support.Error.info) | FALSE of (Support.Error.info) | SUCC of (Support.Error.info) | PRED of (Support.Error.info) | ISZERO of (Support.Error.info) | UCID of (string Support.Error.withinfo) | LCID of (string Support.Error.withinfo) | INTV of (int Support.Error.withinfo) | FLOATV of (float Support.Error.withinfo) | STRINGV of (string Support.Error.withinfo) | APOSTROPHE of (Support.Error.info) | DQUOTE of (Support.Error.info) | ARROW of (Support.Error.info) | BANG of (Support.Error.info) | BARGT of (Support.Error.info) | BARRCURLY of (Support.Error.info) | BARRSQUARE of (Support.Error.info) | COLON of (Support.Error.info) | COLONCOLON of (Support.Error.info) | COLONEQ of (Support.Error.info) | COLONHASH of (Support.Error.info) | COMMA of (Support.Error.info) | DARROW of (Support.Error.info) | DDARROW of (Support.Error.info) | DOT of (Support.Error.info) | EOF of (Support.Error.info) | EQ of (Support.Error.info) | EQEQ of (Support.Error.info) | EXISTS of (Support.Error.info) | GT of (Support.Error.info) | HASH of (Support.Error.info) | LCURLY of (Support.Error.info) | LCURLYBAR of (Support.Error.info) | LEFTARROW of (Support.Error.info) | LPAREN of (Support.Error.info) | LSQUARE of (Support.Error.info) | LSQUAREBAR of (Support.Error.info) | LT of (Support.Error.info) | RCURLY of (Support.Error.info) | RPAREN of (Support.Error.info) | RSQUARE of (Support.Error.info) | SEMI of (Support.Error.info) | SLASH of (Support.Error.info) | STAR of (Support.Error.info) | TRIANGLE of (Support.Error.info) | USCORE of (Support.Error.info) | VBAR of (Support.Error.info) open Parsing;; # 7 "parser.mly" open Support.Error open Support.Pervasive open Syntax # 59 "parser.ml" let yytransl_const = [| 0|] let yytransl_block = [| 257 (* IF *); 258 (* THEN *); 259 (* ELSE *); 260 (* TRUE *); 261 (* FALSE *); 262 (* SUCC *); 263 (* PRED *); 264 (* ISZERO *); 265 (* UCID *); 266 (* LCID *); 267 (* INTV *); 268 (* FLOATV *); 269 (* STRINGV *); 270 (* APOSTROPHE *); 271 (* DQUOTE *); 272 (* ARROW *); 273 (* BANG *); 274 (* BARGT *); 275 (* BARRCURLY *); 276 (* BARRSQUARE *); 277 (* COLON *); 278 (* COLONCOLON *); 279 (* COLONEQ *); 280 (* COLONHASH *); 281 (* COMMA *); 282 (* DARROW *); 283 (* DDARROW *); 284 (* DOT *); 0 (* EOF *); 285 (* EQ *); 286 (* EQEQ *); 287 (* EXISTS *); 288 (* GT *); 289 (* HASH *); 290 (* LCURLY *); 291 (* LCURLYBAR *); 292 (* LEFTARROW *); 293 (* LPAREN *); 294 (* LSQUARE *); 295 (* LSQUAREBAR *); 296 (* LT *); 297 (* RCURLY *); 298 (* RPAREN *); 299 (* RSQUARE *); 300 (* SEMI *); 301 (* SLASH *); 302 (* STAR *); 303 (* TRIANGLE *); 304 (* USCORE *); 305 (* VBAR *); 0|] let yylhs = "\255\255\ \001\000\001\000\002\000\003\000\003\000\004\000\004\000\004\000\ \004\000\005\000\005\000\005\000\005\000\000\000" let yylen = "\002\000\ \001\000\003\000\001\000\001\000\006\000\001\000\002\000\002\000\ \002\000\003\000\001\000\001\000\001\000\002\000" let yydefred = "\000\000\ \000\000\000\000\000\000\011\000\012\000\000\000\000\000\000\000\ \013\000\001\000\000\000\014\000\000\000\003\000\004\000\006\000\ \000\000\007\000\008\000\009\000\000\000\000\000\000\000\010\000\ \002\000\000\000\000\000\005\000" let yydgoto = "\002\000\ \012\000\013\000\014\000\015\000\016\000" let yysindex = "\015\000\ \001\000\000\000\255\254\000\000\000\000\004\255\004\255\004\255\ \000\000\000\000\255\254\000\000\214\254\000\000\000\000\000\000\ \015\255\000\000\000\000\000\000\232\254\001\000\255\254\000\000\ \000\000\017\255\255\254\000\000" let yyrindex = "\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000" let yygindex = "\000\000\ \255\255\000\000\008\000\000\000\006\000" let yytablesize = 294 let yytable = "\003\000\ \010\000\022\000\004\000\005\000\006\000\007\000\008\000\004\000\ \005\000\009\000\017\000\018\000\019\000\020\000\009\000\001\000\ \023\000\024\000\021\000\027\000\025\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\026\000\000\000\ \000\000\000\000\028\000\011\000\000\000\000\000\000\000\000\000\ \011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\003\000\000\000\000\000\004\000\005\000\006\000\007\000\ \008\000\000\000\000\000\009\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\011\000" let yycheck = "\001\001\ \000\000\044\001\004\001\005\001\006\001\007\001\008\001\004\001\ \005\001\011\001\003\000\006\000\007\000\008\000\011\001\001\000\ \002\001\042\001\011\000\003\001\022\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\023\000\255\255\ \255\255\255\255\027\000\037\001\255\255\255\255\255\255\255\255\ \037\001\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\001\001\255\255\255\255\004\001\005\001\006\001\007\001\ \008\001\255\255\255\255\011\001\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\037\001" let yynames_const = "\ " let yynames_block = "\ IF\000\ THEN\000\ ELSE\000\ TRUE\000\ FALSE\000\ SUCC\000\ PRED\000\ ISZERO\000\ UCID\000\ LCID\000\ INTV\000\ FLOATV\000\ STRINGV\000\ APOSTROPHE\000\ DQUOTE\000\ ARROW\000\ BANG\000\ BARGT\000\ BARRCURLY\000\ BARRSQUARE\000\ COLON\000\ COLONCOLON\000\ COLONEQ\000\ COLONHASH\000\ COMMA\000\ DARROW\000\ DDARROW\000\ DOT\000\ EOF\000\ EQ\000\ EQEQ\000\ EXISTS\000\ GT\000\ HASH\000\ LCURLY\000\ LCURLYBAR\000\ LEFTARROW\000\ LPAREN\000\ LSQUARE\000\ LSQUAREBAR\000\ LT\000\ RCURLY\000\ RPAREN\000\ RSQUARE\000\ SEMI\000\ SLASH\000\ STAR\000\ TRIANGLE\000\ USCORE\000\ VBAR\000\ " let yyact = [| (fun _ -> failwith "parser") ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : Support.Error.info) in Obj.repr( # 97 "parser.mly" ( [] ) # 290 "parser.ml" : Syntax.command list )) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 2 : 'Command) in let _2 = (Parsing.peek_val __caml_parser_env 1 : Support.Error.info) in let _3 = (Parsing.peek_val __caml_parser_env 0 : Syntax.command list ) in Obj.repr( # 99 "parser.mly" ( let cmd = _1 in let cmds = _3 in cmd::cmds ) # 301 "parser.ml" : Syntax.command list )) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : 'Term) in Obj.repr( # 106 "parser.mly" ( (let t = _1 in Eval(tmInfo t,t)) ) # 308 "parser.ml" : 'Command)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : 'AppTerm) in Obj.repr( # 110 "parser.mly" ( _1 ) # 315 "parser.ml" : 'Term)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 5 : Support.Error.info) in let _2 = (Parsing.peek_val __caml_parser_env 4 : 'Term) in let _3 = (Parsing.peek_val __caml_parser_env 3 : Support.Error.info) in let _4 = (Parsing.peek_val __caml_parser_env 2 : 'Term) in let _5 = (Parsing.peek_val __caml_parser_env 1 : Support.Error.info) in let _6 = (Parsing.peek_val __caml_parser_env 0 : 'Term) in Obj.repr( # 112 "parser.mly" ( TmIf(_1, _2, _4, _6) ) # 327 "parser.ml" : 'Term)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : 'ATerm) in Obj.repr( # 116 "parser.mly" ( _1 ) # 334 "parser.ml" : 'AppTerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 1 : Support.Error.info) in let _2 = (Parsing.peek_val __caml_parser_env 0 : 'ATerm) in Obj.repr( # 118 "parser.mly" ( TmSucc(_1, _2) ) # 342 "parser.ml" : 'AppTerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 1 : Support.Error.info) in let _2 = (Parsing.peek_val __caml_parser_env 0 : 'ATerm) in Obj.repr( # 120 "parser.mly" ( TmPred(_1, _2) ) # 350 "parser.ml" : 'AppTerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 1 : Support.Error.info) in let _2 = (Parsing.peek_val __caml_parser_env 0 : 'ATerm) in Obj.repr( # 122 "parser.mly" ( TmIsZero(_1, _2) ) # 358 "parser.ml" : 'AppTerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 2 : Support.Error.info) in let _2 = (Parsing.peek_val __caml_parser_env 1 : 'Term) in let _3 = (Parsing.peek_val __caml_parser_env 0 : Support.Error.info) in Obj.repr( # 127 "parser.mly" ( _2 ) # 367 "parser.ml" : 'ATerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : Support.Error.info) in Obj.repr( # 129 "parser.mly" ( TmTrue(_1) ) # 374 "parser.ml" : 'ATerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : Support.Error.info) in Obj.repr( # 131 "parser.mly" ( TmFalse(_1) ) # 381 "parser.ml" : 'ATerm)) ; (fun __caml_parser_env -> let _1 = (Parsing.peek_val __caml_parser_env 0 : int Support.Error.withinfo) in Obj.repr( # 133 "parser.mly" ( let rec f n = match n with 0 -> TmZero(_1.i) | n -> TmSucc(_1.i, f (n-1)) in f _1.v ) # 391 "parser.ml" : 'ATerm)) (* Entry toplevel *) ; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0))) |] let yytables = { Parsing.actions=yyact; Parsing.transl_const=yytransl_const; Parsing.transl_block=yytransl_block; Parsing.lhs=yylhs; Parsing.len=yylen; Parsing.defred=yydefred; Parsing.dgoto=yydgoto; Parsing.sindex=yysindex; Parsing.rindex=yyrindex; Parsing.gindex=yygindex; Parsing.tablesize=yytablesize; Parsing.table=yytable; Parsing.check=yycheck; Parsing.error_function=parse_error; Parsing.names_const=yynames_const; Parsing.names_block=yynames_block } let toplevel (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) = (Parsing.yyparse yytables 1 lexfun lexbuf : Syntax.command list )