mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-19 16:28:12 +03:00
Add C backend command
This commit is contained in:
parent
6f3679d8ca
commit
6652dc8df2
@ -934,6 +934,28 @@ module Commands = struct
|
||||
$ Cli.Flags.check_invariants
|
||||
$ Cli.Flags.closure_conversion)
|
||||
|
||||
let c options includes output optimize check_invariants =
|
||||
let prg, _, type_ordering =
|
||||
Passes.scalc options ~includes ~optimize ~check_invariants
|
||||
~avoid_exceptions:true ~closure_conversion:true
|
||||
in
|
||||
let output_file, with_output = get_output_format options ~ext:".c" output in
|
||||
Message.emit_debug "Compiling program into C...";
|
||||
Message.emit_debug "Writing to %s..."
|
||||
(Option.value ~default:"stdout" output_file);
|
||||
with_output @@ fun fmt -> Scalc.To_c.format_program fmt prg type_ordering
|
||||
|
||||
let c_cmd =
|
||||
Cmd.v
|
||||
(Cmd.info "c" ~doc:"Generates an C translation of the Catala program.")
|
||||
Term.(
|
||||
const c
|
||||
$ Cli.Flags.Global.options
|
||||
$ Cli.Flags.include_dirs
|
||||
$ Cli.Flags.output
|
||||
$ Cli.Flags.optimize
|
||||
$ Cli.Flags.check_invariants)
|
||||
|
||||
let pygmentize_cmd =
|
||||
Cmd.v
|
||||
(Cmd.info "pygmentize"
|
||||
@ -956,6 +978,7 @@ module Commands = struct
|
||||
ocaml_cmd;
|
||||
python_cmd;
|
||||
r_cmd;
|
||||
c_cmd;
|
||||
latex_cmd;
|
||||
html_cmd;
|
||||
makefile_cmd;
|
||||
|
5
compiler/scalc/to_c.ml
Normal file
5
compiler/scalc/to_c.ml
Normal file
@ -0,0 +1,5 @@
|
||||
let format_program
|
||||
(_fmt : Format.formatter)
|
||||
(_p : Ast.program)
|
||||
(_type_ordering : Scopelang.Dependency.TVertex.t list) : unit =
|
||||
assert false
|
Loading…
Reference in New Issue
Block a user