Revision 9e5f8085
Added by Guillaume DAVY over 4 years ago
src/backends/Ada/ada_backend_wrapper.ml | ||
---|---|---|
24 | 24 |
@param instrs list of instructions printer |
25 | 25 |
**) |
26 | 26 |
let pp_main_procedure_definition machine fmt (locals, instrs) = |
27 |
let pp_name = pp_main_procedure_name machine in |
|
28 | 27 |
pp_procedure_definition |
29 |
pp_name |
|
30 |
(pp_simple_prototype pp_name) |
|
28 |
pp_main_procedure_name
|
|
29 |
(pp_simple_prototype pp_main_procedure_name)
|
|
31 | 30 |
(fun fmt local -> fprintf fmt "%t" local) |
32 | 31 |
(fun fmt instr -> fprintf fmt "%t" instr) |
33 | 32 |
fmt |
... | ... | |
48 | 47 |
@param fmt the formater to print on |
49 | 48 |
@param machine the main machine |
50 | 49 |
**) |
51 |
let pp_main_file fmt machine =
|
|
50 |
let pp_main_adb fmt machine =
|
|
52 | 51 |
let stateVar = "state" in |
53 | 52 |
let step_parameters = machine.mstep.step_inputs@machine.mstep.step_outputs in |
54 |
let pp_local_state_var_decl fmt = pp_node_state_decl stateVar fmt machine.mname in
|
|
53 |
let pp_local_state_var_decl fmt = pp_node_state_decl [] stateVar fmt machine in
|
|
55 | 54 |
let apply_pp_var_decl var fmt = pp_machine_var_decl NoMode fmt var in |
56 | 55 |
let locals = List.map apply_pp_var_decl step_parameters in |
57 | 56 |
let locals = pp_local_state_var_decl::locals in |
58 | 57 |
let pp_reset fmt = |
59 | 58 |
fprintf fmt "%a.reset(%s)" |
60 |
pp_package_name machine.mname
|
|
59 |
pp_package_name machine |
|
61 | 60 |
stateVar in |
62 | 61 |
let pp_loop fmt = |
63 | 62 |
fprintf fmt "while true loop@, %a.step(@[%s,@ %a@]);@,end loop" |
64 |
pp_package_name machine.mname
|
|
63 |
pp_package_name machine |
|
65 | 64 |
stateVar |
66 | 65 |
(Utils.fprintf_list ~sep:",@ " pp_var_name) step_parameters |
67 | 66 |
in |
68 | 67 |
let instrs = [pp_reset; pp_loop] in |
69 | 68 |
fprintf fmt "@[<v>%a;@,@,%a;@]" |
70 |
pp_with_node machine.mname
|
|
69 |
pp_with_machine machine
|
|
71 | 70 |
(pp_main_procedure_definition machine) (locals, instrs) |
72 | 71 |
|
72 |
|
|
73 |
(** Print the arrow ads file. |
|
74 |
@param fmt the formater to print on |
|
75 |
**) |
|
76 |
let pp_arrow_ads fmt = |
|
77 |
fprintf fmt "COUCOU" |
|
78 |
|
|
79 |
(** Print the arrow adb file. |
|
80 |
@param fmt the formater to print on |
|
81 |
**) |
|
82 |
let pp_arrow_adb fmt = |
|
83 |
fprintf fmt "COUCOU" |
|
84 |
|
|
73 | 85 |
(** Print the gpr project file. |
74 | 86 |
@param fmt the formater to print on |
75 | 87 |
@param machine the main machine |
76 | 88 |
**) |
77 | 89 |
let pp_project_file fmt machine = |
78 | 90 |
fprintf fmt "project %a is@. for Main use (\"%a\");@.end %a;" |
79 |
pp_package_name machine.mname
|
|
80 |
pp_main_filename machine
|
|
81 |
pp_package_name machine.mname
|
|
91 |
pp_package_name machine |
|
92 |
(pp_filename "adb") pp_main_procedure_name
|
|
93 |
pp_package_name machine |
|
82 | 94 |
|
83 | 95 |
end |
Also available in: Unified diff
Ada: Add support for arrows as an independent generic package, instantiated in each
package using it. It required a lot of refactoring.