Revision 5538b7ac
Added by Xavier Thirioux about 11 years ago
src/main_lustre_compiler.ml | ||
---|---|---|
33 | 33 |
let check_stateless_decls decls = |
34 | 34 |
report ~level:1 (fun fmt -> fprintf fmt ".. checking stateless/stateful status@,@?"); |
35 | 35 |
try |
36 |
List.iter (fun td -> ignore (Corelang.check_stateless_node td)) decls
|
|
37 |
with (Corelang.Error (loc, err)) as exc ->
|
|
36 |
Stateless.check_prog decls
|
|
37 |
with (Stateless.Error (loc, err)) as exc ->
|
|
38 | 38 |
Format.eprintf "Stateless status error at loc %a: %a@]@." |
39 | 39 |
Location.pp_loc loc |
40 |
Corelang.pp_error err;
|
|
40 |
Stateless.pp_error err;
|
|
41 | 41 |
raise exc |
42 | 42 |
|
43 | 43 |
let type_decls env decls = |
... | ... | |
208 | 208 |
Typing.uneval_prog_generics prog; |
209 | 209 |
(* checking clocks compatibility with computed clocks*) |
210 | 210 |
Clock_calculus.check_env_compat header declared_clocks_env computed_clocks_env; |
211 |
Clock_calculus.uneval_prog_generics prog |
|
211 |
Clock_calculus.uneval_prog_generics prog; |
|
212 |
(* checking stateless status compatibility *) |
|
213 |
Stateless.check_compat header |
|
212 | 214 |
with Sys_error _ -> ( |
213 | 215 |
(* Printing lusi file is necessary *) |
214 | 216 |
report ~level:1 |
... | ... | |
229 | 231 |
Format.eprintf "Clock mismatch between computed clock and declared clock in lustre interface file: %a@]@." |
230 | 232 |
Clocks.pp_error err; |
231 | 233 |
raise exc |
234 |
| Stateless.Error (loc, err) as exc -> |
|
235 |
Format.eprintf "Stateless status mismatch between defined status and declared status in lustre interface file: %a@]@." |
|
236 |
Stateless.pp_error err; |
|
237 |
raise exc |
|
232 | 238 |
in |
233 | 239 |
|
234 | 240 |
(* Computes and stores generic calls for each node, |
Also available in: Unified diff
Added declaration/definition of stateless/stateful nodes.
The 'function' keyword is for stateless nodes only,
the 'node' keyword is any kind of node.
Improves compilation and paves the way for more optimizations.