1
|
(* An application that loads json provided input and produces Lustre
|
2
|
|
3
|
Usage:
|
4
|
lustrei -vhdl myvhdl.json
|
5
|
lustrei -scade myscademodel.json
|
6
|
will produce a lustre file that can be compiled and analyzed
|
7
|
|
8
|
VHDL is handled in a double way: as a backend and as an import language
|
9
|
In a first step, lustrei -vhdl -print myvhdl.json shall print the VHDL model in stdout
|
10
|
|
11
|
*)
|
12
|
(*
|
13
|
open Vhdl_ast
|
14
|
open Vhdl_test
|
15
|
*)
|
16
|
open Yojson.Safe
|
17
|
open Vhdl_to_lustre
|
18
|
open Vhdl_ast_utils
|
19
|
open Vhdl_ast_map
|
20
|
open Vhdl_ast_deriving
|
21
|
open Printf
|
22
|
open Printers
|
23
|
open Format
|
24
|
|
25
|
let _ =
|
26
|
(* Load model with Yojson *)
|
27
|
let vhdl_json = from_file Sys.argv.(1) in
|
28
|
|
29
|
(* Create VHDL values *)
|
30
|
let vhdl = vhdl_file_t_of_yojson vhdl_json in
|
31
|
|
32
|
(* Simplify VHDL values *)
|
33
|
match vhdl with
|
34
|
Ok x ->
|
35
|
(* Parsed VHDL JSON value *)
|
36
|
Format.printf "Parsed VHDL: \n%s\n" (pretty_to_string (vhdl_file_t_to_yojson x));
|
37
|
(* Fold Op vhdl_expr_t values *)
|
38
|
let folded = replace_op_expr#vhdl_file_t x in
|
39
|
(* Translate vhdl_file_t value as lustre value *)
|
40
|
let program = to_lustre#vhdl_file_t folded in
|
41
|
Format.printf "PP VHDL: \n%s\n" (show_vhdl_file_t program);
|
42
|
(* Pretty print lustre value *)
|
43
|
(* Printers.pp_prog std_formatter program; *)
|
44
|
|
45
|
| Error e -> Format.printf "Error: %s\n" e;
|
46
|
|