Commit graph

933 commits

Author SHA1 Message Date
Cédric Pasteur 0c1860ccbd Fixed problem with tuple consts in Mls2obc 2010-07-15 13:12:11 +02:00
Cédric Pasteur f8ecf3d76c Fixed Vars read function
When is_left is true, the variables to the right
of the fby should be ignored.
2010-07-15 11:57:47 +02:00
Cédric Pasteur f2559b5e87 Small refactoring 2010-07-15 11:37:30 +02:00
Cédric Pasteur f6ffea710d Comments for callgraph_mapfold 2010-07-15 11:31:48 +02:00
Cédric Pasteur 93fef027f0 Keep the list of static parameters in Obc 2010-07-15 11:31:32 +02:00
Cédric Pasteur aad8545055 Set the correct location for obj_dec 2010-07-15 10:06:16 +02:00
Cédric Pasteur 4f9d6b2d82 Added v_loc in Minils too 2010-07-15 10:02:42 +02:00
Cédric Pasteur 46a09cf369 Make Efield an op (as in Minils)
The fact that this commit mostly removes code proves
that this was a good choice.
2010-07-15 09:56:21 +02:00
Cédric Pasteur 62e216314d Fixed stupid bug 2010-07-15 09:37:20 +02:00
Cédric Pasteur 1c55689b18 Fixed name 2010-07-15 09:27:59 +02:00
Cédric Pasteur a188952ef6 Ported Normalize (not tested yet) 2010-07-15 09:27:51 +02:00
Léonard Gérard c657ce8ecb Schedule with the iterator and eqs/var_decs added in mapfold. 2010-07-14 03:45:38 +02:00
Léonard Gérard 57751992c0 Rebase done : Mls re-ported. Mls_mapfold and mls_utils updated. 2010-07-14 02:58:08 +02:00
Léonard Gérard be7bdc7f27 Mls printer ported. 2010-07-14 02:44:46 +02:00
Léonard Gérard 469e5b86cd A much better and efficient completion_mapfold. 2010-07-14 02:37:03 +02:00
Léonard Gérard ce4f1916da interface_format_version bump ! 10.... 2010-07-14 02:37:02 +02:00
Léonard Gérard 1c2929078d Small tweaks on the hept_mapfold and comments. 2010-07-14 02:37:02 +02:00
Cédric Pasteur 5440a073d6 Fixed generation of C code 2010-07-13 16:23:26 +02:00
Cédric Pasteur 73bd2d080e Correctly set the name of generated nodes 2010-07-13 16:01:42 +02:00
Cédric Pasteur 0d9a35a8b6 Fixed Callgraph_mapfold 2010-07-13 15:37:29 +02:00
Cédric Pasteur dab569d8ad Add missing case for ifthenelse 2010-07-13 14:42:46 +02:00
Cédric Pasteur ee767064b1 Instantiation of parametrized nodes (v2)
- Many changes to make Hept2mls, mls2obc, etc
compile with the api changes
- Added Callgraph_mapfold: starting from a main
program, generates the list of instances of each
node necessary and creates them.
- Mls2seq deals with giving to the code generators
the correct source (mls or obc, wit or without
static parameters)

It is now possible to use parametrized nodes that 
are defined in other files. For that to work, the 
first file has to be compiled to an object file:
	heptc -c mylib.ept
which creates a mylib.epo file. Compiling the main
file will then generate all the instances of 
parametrized nodes from the lib (only the called 
nodes will be compiled, but all the nodes in the 
main file are compiled).
2010-07-13 14:03:39 +02:00
Cédric Pasteur b8f69492b9 Add mapfold for other types in Signature 2010-07-13 13:55:29 +02:00
Cédric Pasteur 4598b29ad2 Forgot to move this file too 2010-07-13 08:47:02 +02:00
Cédric Pasteur e2af987967 Compile fix 2010-07-13 08:38:51 +02:00
Cédric Pasteur 30a78632d2 Fix the order of args in the signature 2010-07-12 10:45:00 +02:00
Cédric Pasteur eb85bfd282 Fix for tuple consts in Initialization
We also need a skeleton fun for consts as there 
can be a const tuple 

TODO : do the same in Clocking ??
2010-07-12 10:22:57 +02:00
Cédric Pasteur 89249e8252 Fix for Initialization
Make eg 0 -> (pre x + 1) legal. This is a temporary 
fix until safe/unsafe functions are correctly handled.
2010-07-12 10:16:16 +02:00
Cédric Pasteur c5184b5d66 Booleans can be used in a switch 2010-07-12 09:25:36 +02:00
Cédric Pasteur eb625cd5d7 Fix operator args (some args have become static) 2010-07-12 09:07:57 +02:00
Cédric Pasteur af0d28fda0 More refactoring of reset
Use exp option to store resets instead of introducing
a new type.
2010-07-09 16:05:31 +02:00
Cédric Pasteur f752f895ce Reset_mapfold
- Also refactored most of the code (why the hell
would anyone use arrays to iterate over lists 
with an index ?!?)
2010-07-09 15:28:26 +02:00
Cédric Pasteur 9e7c013fe2 Completion_mapfold
- Added it_gather combinator to create simply
a version of an iterating function using a gather
to combine accumulator values

Completion_mapfold and every_mapfold seems to work
2010-07-09 13:27:06 +02:00
Cédric Pasteur e7bd251b35 Added Global_mapfold and Mls_mapfold
- Global_mapfold is used to iterate over types
defined in Types or Signature (the iterators 
from Types were moved here)
- Mls_mapfold to iterate over Minils AST (we
do not iterate over clocks yet: is it useful ?)
2010-07-09 11:33:17 +02:00
Cédric Pasteur 3153a8f241 Add missing cases 2010-07-09 10:28:16 +02:00
Cédric Pasteur 3bf2d82d45 Make sure to run check_type on every
Types declared by the user must be checked (this
will also replaced names with the correct longname).
2010-07-09 10:28:09 +02:00
Cédric Pasteur 03b792a220 Fix for scoping 2010-07-09 09:41:29 +02:00
Cédric Pasteur ad2594ebfa Cgen compiles 2010-07-09 09:31:12 +02:00
Cédric Pasteur 23e232cd1f Rewrite Every using Hept_mapfold 2010-07-08 18:13:32 +02:00
Léonard Gérard 000dc91d69 Heptagon and Types mapfold. 2010-07-08 17:41:00 +02:00
Cédric Pasteur 226ddd5c28 Updates for Obc 2010-07-08 17:22:13 +02:00
Cédric Pasteur b0a5a7f13e Heptcheck compiles !! 2010-07-08 15:25:26 +02:00
Cédric Pasteur 68ecd0e781 Added consts in the signature of a module 2010-07-08 15:23:13 +02:00
Léonard Gérard 5baa30f7c1 Last refactor ? and hept_mapred shows in ! 2010-07-08 15:22:26 +02:00
Cédric Pasteur 0e224bf368 Port Static to recent api changes 2010-07-08 15:21:30 +02:00
Cédric Pasteur 587ed634ea Updated Obc Ast 2010-07-08 15:21:30 +02:00
Cédric Pasteur 72ee834641 Proposition for improved Obc AST 2010-07-08 15:20:55 +02:00
Cédric Pasteur 3690585710 Added static records in static_exp 2010-07-08 15:20:55 +02:00
Cédric Pasteur 0b253d22db typing_static_exp should return the static exp
We need to return the static exp because we have 
to replace constructor with their longname.
2010-07-08 15:20:54 +02:00
Cédric Pasteur cee9eed24a Moved sequential/ to obc/ 2010-07-08 15:20:25 +02:00
Cédric Pasteur 662e81d810 Add location and type to static exps 2010-07-08 15:20:25 +02:00
Cédric Pasteur 2fd0860ba8 Renamed Scoping and Parsetree 2010-07-08 15:19:04 +02:00
Cédric Pasteur 7ed81a8950 Moved Obc_printer to a separate file 2010-07-08 15:19:04 +02:00
Cédric Pasteur 978313de1e Moved sequential to compiler/ dir 2010-07-08 15:19:04 +02:00
Cédric Pasteur 24cea56666 Add support for any type of constants 2010-07-08 15:18:08 +02:00
Léonard Gérard 5cc57cd3b0 Static_exps should be in types. field name of ops is a param. 2010-07-08 15:17:08 +02:00
Cédric Pasteur 037f9be664 Remove unused code 2010-07-08 15:16:27 +02:00
Cédric Pasteur 769cb1d881 Updated ast for Static
- Static are used for consts in Heptagon and Minils.
For now, node static parameters remain int only
(ie they are type parameters). Do we need more ?
- Also updated Parsetree AST to the recent changes
in API
2010-07-08 15:16:27 +02:00
Cédric Pasteur c46896ca55 Same api change in Heptagon as in Minils 2010-07-08 15:12:34 +02:00
Léonard Gérard 3cc1652425 Minils and signature tweaked further. 2010-07-08 15:12:02 +02:00
Léonard Gérard 50bd90183d Good static Constructors names. 2010-07-08 15:10:59 +02:00
Adrien Guatto ed280669ec Efields and Etuple are op 2010-07-08 15:04:57 +02:00
Léonard Gérard d58e83a985 Proposition 1. 2010-07-08 15:04:57 +02:00
Adrien Guatto 3698105ccf C back-end: yet another fix for array literals 2010-07-08 12:49:14 +02:00
Adrien Guatto 7918332353 Temporary fix for array literals. 2010-07-08 12:44:34 +02:00
Cédric Pasteur d594ace895 This case is unused 2010-07-07 17:03:36 +02:00
Adrien Guatto 0712378133 Fixed output structure allocation in C backend 2010-07-07 14:44:43 +02:00
Cédric Pasteur c123000eef Always generate a f_out struct
Generate it even if the node has no output. It 
should be noted that it is impossible to call
a node without an output in an Heptagon program. 
This is only useful to provide a simple interface
eg for the generation of main().
2010-07-07 09:58:23 +02:00
Adrien Guatto 0fbaa0217b Fixed missing include dir in minils/_tags 2010-07-06 13:35:11 +02:00
Léonard Gérard 65c12884bd SConst -> Sconst 2010-07-06 11:12:14 +02:00
Léonard Gérard 075cab202a _tags fix. 2010-07-05 16:10:00 +02:00
Adrien Guatto 3dfdf680ee myocamlbuild.ml fix for bytecode 2010-07-05 15:15:24 +02:00
Adrien Guatto 2d8e02d844 Fix: typo size_constr -> size_constrs 2010-07-05 12:09:35 +02:00
Adrien Guatto 6b4881ccd0 Revamped testing framework 2010-07-02 16:03:04 +02:00
Adrien Guatto 1113fd7ec1 Yet another refactoring fix 2010-07-02 15:45:50 +02:00
Adrien Guatto 5a6a3c74ac Fixed refactoring errors. 2010-07-02 15:38:11 +02:00
Adrien Guatto eaafc5db05 C backend: better array printing 2010-07-02 15:30:46 +02:00
Léonard Gérard 0ae39e8698 Good static Constructors names.
Conflicts:

	compiler/global/static.ml
	compiler/heptagon/analysis/typing.ml
	compiler/heptagon/heptagon.ml
	compiler/heptagon/parsing/scoping.ml
	compiler/minils/mls_utils.ml
2010-07-01 20:00:46 +02:00
Léonard Gérard de16b4f178 typo Mls_{P->p}arser 2010-07-01 19:41:07 +02:00
Adrien Guatto a7e34a0a17 C backend: added missing #include 2010-07-01 15:41:07 +02:00
Adrien Guatto 3714cd2a39 C back-end: main() generation updated to the lastest calling convention. 2010-07-01 15:21:11 +02:00
Adrien Guatto 83f02ad86f C backend: moved main() to its own file. 2010-07-01 14:44:08 +02:00
Léonard Gérard b93b176383 Mls parsing error handling adapted to menhir 2010-06-30 18:46:40 +02:00
Cédric Pasteur 9448ed23a1 Formatting fixes 2010-06-30 17:30:48 +02:00
Cédric Pasteur 79fb193206 New calling convention in generated code
Functions take as arg:
	- the inputs
	- a 'f_out' structure: if there is at least one
input (whatever their type are)
	- a 'f_mem' structure: containing memories and
contexts for child nodes. This is created only for
node (not for fun). A node declared statefull 
without any memory will have an empty structure.
2010-06-30 17:30:48 +02:00
Léonard Gérard 7e29ba4057 ?? nothing 2010-06-30 17:25:00 +02:00
Adrien Guatto d0b222b003 Working Menhir parser with --table 2010-06-30 17:00:07 +02:00
Léonard Gérard 562c0ab602 re re Parsing. 2010-06-30 15:45:40 +02:00
Léonard Gérard 6ab18a65ec Parsing..... again. 2010-06-30 15:45:40 +02:00
Léonard Gérard 92afdbfb98 Mls parsing to ammend. 2010-06-30 15:45:40 +02:00
Adrien Guatto 6e9cd7f490 Fixed missing error reporting. 2010-06-30 14:11:13 +02:00
Adrien Guatto 7d6ed5d30f Fixed parse error reporting 2010-06-30 14:04:17 +02:00
Cédric Pasteur 01d0cd02c3 Remove bounds hack in Eselect_dyn
We no longer need to store the bounds as the 
bounds check expression is generated from MiniLS
code where the type is directly available.
2010-06-30 13:46:46 +02:00
Cédric Pasteur b4419a6760 Better deal with memory less nodes
There are now 3 kinds of nodes: Eprim : primitive 
nodes, Enode: nodes with memory, Efun: nodes 
without memory.

Typing now sets correct eq_statefull and b_statefull
for equations and blocks. Resets are only added 
when a node with memory is called.

The calling convention is the generated code needs
to be modified so that we can remove the context 
for nodes without memory.
2010-06-30 13:37:54 +02:00
Léonard Gérard 2af3686af2 Mls printer fix. 2010-06-30 03:25:08 +02:00
Léonard Gérard 0c5a8d8ffe compilers refactoring. and bug fix of heptc vs heptcheck. 2010-06-29 19:21:07 +02:00
Léonard Gérard 2127a1c2d4 Mls printing fix. 2010-06-29 19:21:07 +02:00
Léonard Gérard 88732ef2a9 parsing warning removed. 2010-06-29 19:21:07 +02:00
Léonard Gérard 7c0c2e0415 v_name -> v_ident for idents.... 2010-06-29 19:21:01 +02:00
Léonard Gérard eca36de94b Moved mlsparsing stuff to minils/parsing. 2010-06-29 19:18:50 +02:00
Adrien Guatto f35bf95458 Indentation fixes! 2010-06-29 11:18:50 +02:00
Adrien Guatto ef55c8f9fd Fixed forgotten AST change in MiniLS. 2010-06-29 11:12:04 +02:00
Léonard Gérard 0f2d046d59 Gros blop pour que Mlsc compile.
-* Séparation du fichier minils avec création de mls_utils
-* Lexer et Parser qui fonctionnent (pas complets encore)
-* Use of menhir with --explain pour debug du parser
-* Quelques refactoring (ident/name...)
2010-06-28 18:06:39 +02:00
Cédric Pasteur 3a80061392 Fix compilation 2010-06-28 16:15:44 +02:00
Cédric Pasteur 9105b54c1f Fix for causality
Tuples should behave like ands for nodes that
are not reads or writes of a single variable
2010-06-28 16:12:14 +02:00
Adrien Guatto ff07d77667 Assertion generation for C back-end. 2010-06-27 23:28:38 +02:00
Adrien Guatto 5db45bd497 Generated C programs now accept a max step command-line argument. 2010-06-27 23:28:38 +02:00
Adrien Guatto b4ddefa65c Tabs, trailing ws and long lines shall receive no mercy! 2010-06-26 17:17:28 +02:00
Cédric Pasteur dece22d0b6 Fix iterators with constant arrays 2010-06-25 13:48:57 +02:00
Cédric Pasteur 9b18eb71a4 Operators can appear in the exp normal form 2010-06-25 13:48:46 +02:00
Léonard Gérard 1a829ea4e0 Mls parser tweak, todos and co added 2010-06-24 05:05:58 +02:00
Cédric Pasteur 21891b8746 Fixed bug in causal 2010-06-24 05:01:11 +02:00
Cédric Pasteur b360e56893 Unbreak Graph 2010-06-24 05:01:10 +02:00
Cédric Pasteur 4525f5cfd0 More compile fix 2010-06-24 05:01:10 +02:00
Cédric Pasteur c57ae52862 Do not forget to write the interface file 2010-06-24 05:01:10 +02:00
Cédric Pasteur 744f166e12 Add a missing case in Minils Init
The encoding of a reset for e1 -> e2 (in heptagon) is:
	if true fby false then e1 else e2

which is well initiliazed even in e2 = pre x.
2010-06-24 05:01:10 +02:00
Cédric Pasteur 7984917b0e Make the file more readable
Use let in and meaningfull names 
to show the structure of the functions 
(which shows that it is more simple that it 
appeared before)
2010-06-24 05:01:10 +02:00
Adrien Guatto 30338a3f38 Removed outdated command-line options. 2010-06-24 04:59:35 +02:00
Cédric Pasteur 8515c533d2 Updated Heptagon printer
The indentation is not perfect but this will do.
2010-06-24 04:59:35 +02:00
Cédric Pasteur db6344921a Updated Obc printer 2010-06-24 04:56:53 +02:00
Cédric Pasteur 6f2d5175e5 Do not add reset for op 2010-06-24 04:56:53 +02:00
Adrien Guatto 206605a707 Added missing boolean case in MiniLS' print_type. 2010-06-24 04:56:53 +02:00
Cédric Pasteur 0a65964ee6 Put back error in Clocking 2010-06-24 04:56:53 +02:00
Cédric Pasteur ac87128e54 Put a special case for operators
Without this, pre x + 1 cannot be written.
2010-06-24 04:55:15 +02:00
Cédric Pasteur ccfd3f368a Disable this for now 2010-06-24 04:55:15 +02:00
Cédric Pasteur 5f1b63b33a Fix bug with locations 2010-06-24 04:55:15 +02:00
Cédric Pasteur 3b6ca84d8d Remove code that should only be in memalloc branch 2010-06-24 04:54:46 +02:00
Cédric Pasteur 12224395ae Fix printing 2010-06-24 04:54:46 +02:00
Cédric Pasteur 5c318ace90 Uniformize labels 2010-06-24 04:54:46 +02:00
Léonard Gérard 15529eed90 Small todo fix, (reactivate error printing in clocking since now the printer works). 2010-06-24 03:32:46 +02:00
Léonard Gérard fc39057230 Bug in the Makefile ? GENSOURCES removed from .depend dependencies. (circular issue)
FIXME Makefile to deal with the news files
2010-06-24 03:31:57 +02:00
Léonard Gérard 9fff8e4ad8 Refactoring and organisation.
Separate parser, lexer and printer of hpetagon (Hetp_*) from the minils ones (Mls_*)
ident_of_var -> ident_of_name
get_current_location -> current_loc
2010-06-24 03:30:14 +02:00
Léonard Gérard 60a3ad15f8 move to subfolder compiler. 2010-06-21 11:58:57 +02:00