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
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