module Ast = Ast module Lexer = Lexer module Parser = Parser module Typechecker = Typechecker module Generator_json = Generator_json module Generator_c = Generator_c type program = Ast.program let parse_string = Parser.parse_string let string_of_program = Ast.string_of_program let type_check = Typechecker.type_check let parse_and_type_check src = match parse_string src with | Error e -> Error e | Ok prog -> (match type_check prog with | Ok () -> Ok prog | Error e -> Error ("type error: " ^ e)) let generate_json = Generator_json.generate let generate_c = Generator_c.generate