Commit Graph

119 Commits

Author SHA1 Message Date
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
dsac
6308dc893f [cli] support for basic arguments 2022-12-08 11:40:05 +01:00
dsac
232624abac renaming 2022-12-07 22:08:38 +01:00
dsac
839f7b77af [parser] adding support for expressions 2022-12-07 21:56:38 +01:00
dsac
e9e5cdcf4d [parser] parses and dumps content (without expressions) 2022-12-07 16:45:55 +01:00