2019-09-10 15:19:15 +02:00
|
|
|
open Trace
|
2019-09-11 13:56:39 +02:00
|
|
|
open Helpers
|
|
|
|
|
2020-06-12 13:33:14 +02:00
|
|
|
let compile (source_filename:string) syntax : (Ast_imperative.program , _) result =
|
2019-09-11 13:56:39 +02:00
|
|
|
let%bind syntax = syntax_to_variant syntax (Some source_filename) in
|
2020-06-29 13:05:34 +00:00
|
|
|
let%bind abstract = parse_and_abstract syntax source_filename in
|
2020-03-12 23:20:39 +01:00
|
|
|
ok abstract
|
2019-09-11 13:56:39 +02:00
|
|
|
|
2020-06-12 13:33:14 +02:00
|
|
|
let compile_string (source:string) syntax : (Ast_imperative.program , _) result =
|
2020-06-29 13:05:34 +00:00
|
|
|
let%bind abstract = parse_and_abstract_string syntax source in
|
2020-03-12 23:20:39 +01:00
|
|
|
ok abstract
|
2019-12-23 15:18:32 +01:00
|
|
|
|
2020-06-12 13:33:14 +02:00
|
|
|
let compile_expression : v_syntax -> string -> (Ast_imperative.expression , _) result =
|
2019-11-29 21:22:56 +00:00
|
|
|
fun syntax exp ->
|
2020-06-29 13:05:34 +00:00
|
|
|
parse_and_abstract_expression syntax exp
|
2019-09-11 13:56:39 +02:00
|
|
|
|
2020-06-12 13:33:14 +02:00
|
|
|
let compile_contract_input : string -> string -> v_syntax -> (Ast_imperative.expression , _) result =
|
2019-11-29 21:22:56 +00:00
|
|
|
fun storage parameter syntax ->
|
|
|
|
let%bind (storage,parameter) = bind_map_pair (compile_expression syntax) (storage,parameter) in
|
2020-03-12 23:20:39 +01:00
|
|
|
ok @@ Ast_imperative.e_pair storage parameter
|
2020-01-21 12:24:51 +00:00
|
|
|
|
2020-05-25 20:29:48 +02:00
|
|
|
let pretty_print_cst source_filename syntax =
|
|
|
|
Helpers.pretty_print_cst syntax source_filename
|
2020-04-12 15:26:47 +02:00
|
|
|
|
|
|
|
let preprocess source_filename syntax =
|
|
|
|
Helpers.preprocess syntax source_filename
|
2020-05-25 20:29:48 +02:00
|
|
|
|
|
|
|
let pretty_print source_filename syntax =
|
2020-06-29 13:05:34 +00:00
|
|
|
Helpers.pretty_print syntax source_filename
|