Commit Graph

154 Commits

Author SHA1 Message Date
dsac
233b385608 missing 'state->' added + print +,-,*,... 2022-12-17 23:46:39 +01:00
dsac
7a32d474d4 [ast2C] support for some basic operations (exemple in test.node) 2022-12-17 23:36:07 +01:00
dsac
cbc834b32a [ast2C] constants, simple assignations, variables (+ one fix about pre storage) 2022-12-17 22:36:42 +01:00
dsac
a877501cca [general] renaming: done. 2022-12-17 21:37:37 +01:00
dsac
3cbfaeb2a8 [general] renaming (pp -> lustre_pp ; c_* -> intermediate_*) 2022-12-17 21:26:32 +01:00
dsac
916c7f544b [ast2C] initialize states of auxiliary nodes. 2022-12-17 18:34:11 +01:00
dsac
6291957be5 [ast2C] init or not init (field added to the state of the node) 2022-12-17 16:35:49 +01:00
dsac
bb99a5882b [ast2C] store old values of variables used in the pre construct 2022-12-17 16:30:10 +01:00
dsac
0da0f58b22 [ast2C] proposition initiale 2022-12-17 16:01:48 +01:00
7a0f54f291 Remove unused pp_loc from src/ast_to_c.ml which was copied from src/pp.ml but never used 2022-12-16 15:40:24 +01:00
Antoine Grimod
aa84a07902 testing clock unification 2022-12-16 14:51:41 +01:00
Antoine Grimod
ed54fd0114 clock unification added 2022-12-16 14:51:41 +01:00
Arnaud DABY-SEESARAM
b69b6998ec [passes] linearisation: update the local variables + lienarisation of tri ops 2022-12-16 14:41:37 +01:00
530f6ddf51 Merge branch 'master' of https://gitea.lemnoslife.com/Benjamin_Loison/Synchronous_reactive_systems 2022-12-16 05:55:15 +01:00
Arnaud DABY-SEESARAM
57dd9c1aa4 [passes] linearozation: avoir duplication of variables 2022-12-16 14:16:13 +01:00
21414e6461 Make last equation of a node potentially not ending with a semi column
Otherwise the following code:

```
-- count the number of top between two tick
node counting (tick:bool; top:bool)
returns (o: bool);
	var v: int;
	let o = if tick then v else 0 -> pre o + v;
		v = if top then 1 else 0
	tel;
```

was involving the following error:

```
Syntax error at <line 1: -- count the number of top between two tick >
```
2022-12-16 05:54:41 +01:00
ea94bb84dd Merge branch 'master' of https://gitea.lemnoslife.com/Benjamin_Loison/Synchronous_reactive_systems 2022-12-16 04:47:05 +01:00
Arnaud DABY-SEESARAM
3417d75620 [passes] linearisation: correction (10 -> pre (20 -> 30)) works 2022-12-16 09:44:50 +01:00
f55cd56fde Clean other tries 2022-12-16 04:46:48 +01:00
012131e035 Solve C warnings and support renaming outputs of functions 2022-12-16 04:45:30 +01:00
b58b250532 WIP to remove C warnings 2022-12-16 03:18:21 +01:00
78e096d2f4 Add support for returning multiple variables but generate C errors, as we keep returning variables for void functions 2022-12-16 03:03:12 +01:00
621658e177 Removing first try to implement generalized function results 2022-12-16 01:55:53 +01:00
85ecea0b9e First try to implement generalized function results 2022-12-16 01:55:21 +01:00
7c2c43fe24 Precise to what extent considering integers work fine with working with floats instead 2022-12-16 01:20:42 +01:00
Arnaud DABY-SEESARAM
c7a97f3305 [passes] linearization: merge fix 2022-12-16 09:00:03 +01:00
Arnaud DABY-SEESARAM
8d6349dd3f Merge remote-tracking branch 'origin/master' into wip 2022-12-16 08:53:55 +01:00
Arnaud DABY-SEESARAM
d7f0f148e9 [pre linearization] done, not tested 2022-12-16 08:52:48 +01:00
dsac
9987922e0f [passes] linearization of pre (wip) 2022-12-16 07:47:20 +01:00
Antoine Grimod
6af9ddf394 added pass to check validity of automata and disable flattening of automaton branch because of incorrect code resulting from it 2022-12-16 01:04:09 +01:00
Antoine Grimod
1b3af051b3 adding automaton translation pass to list of executed passes 2022-12-16 00:06:51 +01:00
b4ae058bf6 Remove unused variable new_locvars in src/passes.ml 2022-12-16 00:04:57 +01:00
0c8da12afe Correct typo in verification that nodes always have arguments and make the main having such a verification too, as in Lustre 2022-12-16 00:00:11 +01:00
Antoine Grimod
21d2d0c9bb fix type error in code 2022-12-15 23:48:02 +01:00
Antoine Grimod
de294df84a Translation of automaton to lustre almost finished 2022-12-15 23:39:01 +01:00
bfca80bb8b Avoid crashes that can occur when using when with a statement that may crash if the when condition doesn't hold
For instance

```
node main () returns (o: int);
var i: int;
let
    i = 0;
    o = (1 / i) when false;
tel
```

used to crash with for instance:

```
Floating point exception
136
```

now returns `0` but in fact this value wouldn't be used in theory as the `when` condition doesn't hold.
2022-12-15 23:22:15 +01:00
dsac
74f8a3c3e1 [parser] functions other that main → args required 2022-12-15 22:14:59 +01:00
dsac
0d5e045671 [parser] foirbid calling auxiliary nodes with no arguments 2022-12-15 22:07:16 +01:00
dsac
97c6020414 [parser] avoid conflicts between local, input and output variables 2022-12-15 21:42:21 +01:00
bc8c752649 Add a comment concerning pp_resvars to avoid declaring multiple times two arrays while two would be enough 2022-12-15 21:05:20 +01:00
dsac
eceeb3c157 [fix] identation error 2022-12-15 20:37:05 +01:00
ca271eaf66 Correct typos in src/passes.ml and src/test.node 2022-12-15 20:13:18 +01:00
72ba196142 Merge branch 'master' of https://gitea.lemnoslife.com/Benjamin_Loison/Synchronous_reactive_systems 2022-12-15 19:52:02 +01:00
1a06fc9a6a Add reset support in C 2022-12-15 19:51:46 +01:00
Arnaud DABY-SEESARAM
8582337774 [passes] pass to check the typing tags of the program / expressions 2022-12-15 18:33:04 +01:00
Arnaud DABY-SEESARAM
db5c584435 [passes] fix for the equation ordering pass 2022-12-15 17:40:15 +01:00
Arnaud DABY-SEESARAM
6459c54159 [passes] ordering equations 2022-12-15 17:11:19 +01:00
Arnaud DABY-SEESARAM
9151a6e29a [tests] adding the -test option to duplicate sanity checks 2022-12-15 17:11:19 +01:00
342aba4426 Correct copy-pasted int and bool cases 2022-12-15 16:08:22 +01:00
dsac
ed5f94f821 [simu] wip 2022-12-15 09:13:59 +01:00
dsac
e75d525a6d [passes] linearisation des équations 2022-12-15 09:13:28 +01:00
dsac
73d5ed7726 [parser] avoid redefinition of nodes 2022-12-14 18:41:59 +01:00
Arnaud DABY-SEESARAM
79f0c7d223 [passes] never redefine an input 2022-12-13 18:15:48 +01:00
Arnaud DABY-SEESARAM
f3416582be [passes] correction of the check not re-init of variables 2022-12-13 18:08:11 +01:00
c441f8b1a6 Correct typo in comment in src/config.ml 2022-12-13 16:03:05 +01:00
Antoine Grimod
b4cc3ae756 "pretty" print for automaton 2022-12-13 15:57:27 +01:00
Arnaud DABY-SEESARAM
e5ac9a719d [passes] check unicity of the assignations for each var 2022-12-13 15:55:21 +01:00
Arnaud DABY-SEESARAM
69b963c305 [gitfix] rebase fix 2022-12-13 15:04:53 +01:00
Antoine Grimod
bb017afe39 added automaton to ast 2022-12-13 15:03:41 +01:00
Arnaud DABY-SEESARAM
ad1f529863 [typo] adding newline 2022-12-13 14:57:55 +01:00
Arnaud DABY-SEESARAM
51ed84504f [pre propagation] done. 2022-12-13 14:25:48 +01:00
Antoine Grimod
e9d586dfe7 adding automaton 2022-12-13 11:51:46 +01:00
Arnaud DABY-SEESARAM
c4ad75e4cb [passes] auxiliary functions 2022-12-13 11:46:04 +01:00
Arnaud DABY-SEESARAM
19be2200f3 Catch syntax errors 2022-12-13 11:43:23 +01:00
Arnaud DABY-SEESARAM
8ef4d035a3 Reject programs with var initialized twice 2022-12-13 10:26:55 +01:00
Arnaud DABY-SEESARAM
ef0effeb1f improvement over error messages (with code ;) ) 2022-12-13 10:26:55 +01:00
298e88f1a5 Simplify ETriOp case in src/ast_to_c.ml 2022-12-11 22:25:11 +01:00
014110791d Remove useless prefix from pp_expression_aux and pp_expression_list functions in src/ast_to_c.ml 2022-12-11 20:07:28 +01:00
cbddd63927 Format the code to make it shorter and more readable 2022-12-11 19:53:23 +01:00
241f3dcbc0 Add pre support in C 2022-12-11 19:28:41 +01:00
c0c29e1df7 Add assignement support for tuples 2022-12-11 18:45:30 +01:00
da823ac3c8 Add -> support in C 2022-12-10 21:17:32 +01:00
38f58f7558 Unitfy pp_varlist, pp_argvarlist and pp_decvarlist 2022-12-10 20:51:52 +01:00
eac8c6893c Add support to multiple local variables in C 2022-12-10 20:30:32 +01:00
363f5043a0 Add node call support in C 2022-12-10 20:22:11 +01:00
5a54f897b1 Add indentation to pp_equations in src/ast_to_c.ml 2022-12-10 19:27:18 +01:00
ac1eea42e9 Make <=, >= and <> work 2022-12-10 19:24:34 +01:00
a44c9288f5 Translate two expressions of the AST from French to English 2022-12-10 19:12:16 +01:00
b2e3ec4dd8 Modify src/ast_to_c.ml as a first iteration 2022-12-10 19:07:18 +01:00
a8e89854a4 Copy src/pp.ml to src/ast_to_c and modify src/main.ml accordingly
Just `pp_ast` was renamed to `ast_to_c`.
2022-12-10 18:58:06 +01:00
Arnaud DABY-SEESARAM
54d806f149 [pp] add typing information 2022-12-10 17:20:02 +01:00
Arnaud DABY-SEESARAM
5551237414 [parser] types of both side of equations are lists 2022-12-10 17:14:54 +01:00
45d64f6960 Add reset keyword 2022-12-10 02:18:04 +01:00
dcf7320c0d Add one-line comment support and make some semi-column optional
Make possible the parsing of the counting example of *Clock-directed Modular Code Generation for Synchronous Data-flow Languages* (https://www.di.ens.fr/~pouzet/bib/lctes08a.pdf).

```
-- count the number of top between two tick
node counting (tick:bool; top:bool)
returns (o: int)
var v: int;
let o = if tick then v else 0 -> pre o + v;
    v = if top then 1 else 0;
tel;
```

The one-line comment rule was inspired from https://mukulrathi.com/create-your-own-programming-language/parsing-ocamllex-menhir/. Note their typo using `single_line_comment` instead of `read_single_line_comment`.
2022-12-10 01:58:09 +01:00
97930ba85c Correcting typos and using only English 2022-12-10 00:53:20 +01:00
Arnaud DABY-SEESARAM
8775edc6fc [parser] working equation type-checker 2022-12-10 00:33:14 +01:00
a17b3c6fdd Make real type works
Otherwise for the following code:

```
node test (i: real) returns (o: real);
let
    o = 0.0;
tel
```

was experiencing:

```
Fatal error: exception Stdlib.Parsing.Parse_error
Raised at Stdlib__Parsing.yyparse.loop in file "parsing.ml", line 139, characters 8-25
Called from Stdlib__Parsing.yyparse in file "parsing.ml", line 165, characters 4-28
Re-raised at Stdlib__Parsing.yyparse in file "parsing.ml", line 184, characters 8-17
Called from Parser.main in file "parser.ml" (inlined), line 1110, characters 4-44
Called from Main in file "main.ml", line 70, characters 16-68
```

Note that `%token REAL` doesn't help to solve this error, but it doesn't seem to be any reason for not having it.
2022-12-10 00:05:07 +01:00
dsac
3c811c6128 Merge remote-tracking branch 'origin/master' 2022-12-10 00:00:28 +01:00
dsac
eb469bc960 Cleanning after last merge + parser factorisation 2022-12-10 00:00:17 +01:00
da1406fbcc Precise varlist types in the AST 2022-12-09 23:43:56 +01:00
Arnaud DABY-SEESARAM
53e356ff55 merge: fby: transformation -> pre dans le parseur 2022-12-09 23:22:05 +01:00
Arnaud DABY-SEESARAM
347cb3a11d [parser] ajout de fby (proposition alternative) + type checker (sera factorisé) 2022-12-09 23:18:13 +01:00
e9dd3fbde4 Add FBY instruction 2022-12-09 22:56:51 +01:00
Arnaud DABY-SEESARAM
a29666f673 [parser] type-checking 2022-12-08 17:52:19 +01:00
Arnaud DABY-SEESARAM
f64a25b0b5 [cleaning] 2022-12-08 14:34:50 +01:00
Antoine Grimod
0c2341fa0b finished parser for now 2022-12-09 17:01:04 +01:00
Arnaud DABY-SEESARAM
428b0a75e2 [parser] (wip) explicitely typing the language 2022-12-09 16:33:07 +01:00
Arnaud DABY-SEESARAM
f84279c5d8 [parser] fixes + pretty_printers 2022-12-09 15:47:27 +01:00
Arnaud DABY-SEESARAM
74c04a0e4e [parser] new parser, no more pp (for now) 2022-12-09 14:26:28 +01:00
Arnaud DABY-SEESARAM
b57cee3f73 [ast] GADTs 2022-12-08 19:49:57 +01:00