ligo/src/main/uncompile/uncompile.ml

25 lines
1.0 KiB
OCaml
Raw Normal View History

2019-11-29 21:22:56 +00:00
open Trace
type ret_type = Function | Expression
let uncompile_value func_or_expr program entry ex_ty_value =
let%bind entry_expression = Ast_typed.get_entry program entry in
let%bind output_type = match func_or_expr with
2019-12-04 18:30:52 +01:00
| Expression -> ok entry_expression.type_expression
2019-11-29 21:22:56 +00:00
| Function ->
2019-12-04 18:30:52 +01:00
let%bind (_,output_type) = Ast_typed.get_t_function entry_expression.type_expression in
2019-11-29 21:22:56 +00:00
ok output_type in
let%bind mini_c = Compiler.Uncompiler.translate_value ex_ty_value in
let%bind typed = Transpiler.untranspile mini_c output_type in
Typer.untype_expression typed
let uncompile_typed_program_entry_expression_result program entry ex_ty_value =
uncompile_value Expression program entry ex_ty_value
let uncompile_typed_program_entry_function_result program entry ex_ty_value =
2019-12-11 20:42:52 +01:00
uncompile_value Function program entry ex_ty_value
let uncompile_expression type_value ex_ty_value =
let%bind mini_c = Compiler.Uncompiler.translate_value ex_ty_value in
let%bind typed = Transpiler.untranspile mini_c type_value in
2019-12-04 18:30:52 +01:00
Typer.untype_expression typed