type token = IDENT of (string) | LET | EQUAL | LAMBDA | LPAREN | RPAREN | DOT | EOF | SEMI open Parsing # 9 "parser.mly" (* This is where ocaml declarations go *) open Node (* Line 6, file parser.ml *) let yytransl_const = [| 258 (* LET *); 259 (* EQUAL *); 260 (* LAMBDA *); 261 (* LPAREN *); 262 (* RPAREN *); 263 (* DOT *); 0 (* EOF *); 264 (* SEMI *); 0|] let yytransl_block = [| 257 (* IDENT *); 0|] let yylhs = "\255\255\ \001\000\001\000\001\000\001\000\002\000\003\000\003\000\004\000\ \004\000\004\000\006\000\005\000\005\000\000\000" let yylen = "\002\000\ \003\000\003\000\002\000\001\000\004\000\001\000\001\000\001\000\ \003\000\001\000\004\000\002\000\002\000\002\000" let yydefred = "\000\000\ \000\000\000\000\008\000\000\000\000\000\000\000\004\000\000\000\ \014\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\ \000\000\003\000\000\000\000\000\013\000\012\000\000\000\000\000\ \009\000\001\000\002\000\005\000\011\000" let yydgoto = "\002\000\ \009\000\010\000\011\000\012\000\013\000\014\000" let yysindex = "\003\000\ \001\000\000\000\000\000\006\255\011\255\001\255\000\000\001\000\ \000\000\005\255\008\255\001\255\001\255\000\000\018\255\015\255\ \017\255\000\000\001\000\001\000\000\000\000\000\001\255\001\255\ \000\000\000\000\000\000\000\000\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\002\255\003\255\000\000\000\000\000\000\ \000\000\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\ \251\255\000\000\250\255\007\000\000\000\000\000" let yytablesize = 265 let yytable = "\017\000\ \007\000\003\000\018\000\001\000\005\000\006\000\015\000\006\000\ \007\000\006\000\007\000\016\000\019\000\026\000\027\000\020\000\ \028\000\029\000\021\000\022\000\023\000\024\000\025\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\005\000\006\000\000\000\000\000\ \008\000" let yycheck = "\006\000\ \000\000\001\001\008\000\001\000\004\001\005\001\001\001\006\001\ \006\001\008\001\008\001\001\001\008\001\019\000\020\000\008\001\ \023\000\024\000\012\000\013\000\003\001\007\001\006\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\255\255\ \255\255\255\255\255\255\255\255\255\255\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\002\001\255\255\004\001\005\001\255\255\255\255\ \008\001" let yyact = [| (fun _ -> failwith "parser") ; (fun parser_env -> let _1 = (peek_val parser_env 2 : 'declaration) in let _3 = (peek_val parser_env 0 : Node.exp list) in Obj.repr(( # 26 "parser.mly" _3 ) : Node.exp list)) ; (fun parser_env -> let _1 = (peek_val parser_env 2 : 'expression) in let _3 = (peek_val parser_env 0 : Node.exp list) in Obj.repr(( # 27 "parser.mly" _1::_3 ) : Node.exp list)) ; (fun parser_env -> let _2 = (peek_val parser_env 0 : Node.exp list) in Obj.repr(( # 28 "parser.mly" _2 ) : Node.exp list)) ; (fun parser_env -> Obj.repr(( # 29 "parser.mly" [] ) : Node.exp list)) ; (fun parser_env -> let _2 = (peek_val parser_env 2 : string) in let _4 = (peek_val parser_env 0 : 'expression) in Obj.repr(( # 33 "parser.mly" print_string "Parsed: "; print_exp _4; print_newline(); global_env := (_2,bruijnize _4)::!global_env ) : 'declaration)) ; (fun parser_env -> let _1 = (peek_val parser_env 0 : 'simpexp) in Obj.repr(( # 42 "parser.mly" _1 ) : 'expression)) ; (fun parser_env -> let _1 = (peek_val parser_env 0 : 'application) in Obj.repr(( # 44 "parser.mly" _1 ) : 'expression)) ; (fun parser_env -> let _1 = (peek_val parser_env 0 : string) in Obj.repr(( # 48 "parser.mly" StrVar(_1) ) : 'simpexp)) ; (fun parser_env -> let _2 = (peek_val parser_env 1 : 'expression) in Obj.repr(( # 52 "parser.mly" _2 ) : 'simpexp)) ; (fun parser_env -> let _1 = (peek_val parser_env 0 : 'abstraction) in Obj.repr(( # 54 "parser.mly" _1 ) : 'simpexp)) ; (fun parser_env -> let _2 = (peek_val parser_env 2 : string) in let _4 = (peek_val parser_env 0 : 'expression) in Obj.repr(( # 59 "parser.mly" Lambda(_2,_4) ) : 'abstraction)) ; (fun parser_env -> let _1 = (peek_val parser_env 1 : 'application) in let _2 = (peek_val parser_env 0 : 'simpexp) in Obj.repr(( # 63 "parser.mly" Apply(_1,_2) ) : 'application)) ; (fun parser_env -> let _1 = (peek_val parser_env 1 : 'simpexp) in let _2 = (peek_val parser_env 0 : 'simpexp) in Obj.repr(( # 65 "parser.mly" Apply(_1,_2) ) : 'application)) (* Entry program *) ; (fun parser_env -> raise (YYexit (peek_val parser_env 0))) |] let yytables = { actions=yyact; transl_const=yytransl_const; transl_block=yytransl_block; lhs=yylhs; len=yylen; defred=yydefred; dgoto=yydgoto; sindex=yysindex; rindex=yyrindex; gindex=yygindex; tablesize=yytablesize; table=yytable; check=yycheck; error_function=parse_error } let program (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) = (yyparse yytables 1 lexfun lexbuf : Node.exp list) (* Line 69, file parser.mly *) (* End of parser.mly *) (* Line 210, file parser.ml *)