Commit graph

96 commits

Author SHA1 Message Date
Cédric Pasteur
c99e29ef74 Make sure to unalias type when checking for arrays 2010-07-28 09:53:16 +02:00
Cédric Pasteur
221eea1644 Added polymorphic (=) and (<>) operators
These two operators really need to be polymorphic, 
so they cannot be in Pervasives. a <> b is translated
to not (a = b>) at parsing.
2010-07-27 17:16:49 +02:00
Cédric Pasteur
02dd7fa124 Added alias for types (aka typedef)
For instance:
type metres = int
type metres = MyLib.longueur
type matrice = metres^10^100

Code generation in C (with typedef) included. The 
code uses the aliases for traceability.
2010-07-27 09:23:16 +02:00
Cédric Pasteur
e3676d1e3c Fixed problem in clocking
Tuple of consts should have one clock var per 
element. Added a new function const_skeleton to
create this kind of clock.
2010-07-26 15:34:46 +02:00
Cédric Pasteur
a081f2dacf Added foldi iterator
Same as fold but the iterated function takes an 
integer as the last but one argument.
This is not something that is necessarily 
important to have in trunk but the patch is so 
small that it doesn't hurt.
2010-07-26 09:33:22 +02:00
Léonard Gérard
dc9bec28bf Clock refactoring. 2010-07-23 22:13:03 +02:00
Léonard Gérard
1719e2eb36 Fix bad clock expectation for static_exps. 2010-07-23 22:05:54 +02:00
Léonard Gérard
f124bb4fd7 Refactoring Ident -> Idents ( uniform with Names etc ) 2010-07-23 19:45:19 +02:00
Cédric Pasteur
0be31badae Added some doc
I'm not sure if this is very clear but it's a start...
2010-07-22 10:01:40 +02:00
Cédric Pasteur
4d52fe79ef Compile fix 2010-07-22 09:22:50 +02:00
Cédric Pasteur
bbb8e2e286 Do not forget to normalize iterators 2010-07-21 17:20:19 +02:00
Cédric Pasteur
493f49fe04 Added iterator fusion
For now it only deals with maps but it can be
easily extended. See test/good/itfusion.ept for 
examples of sequences that can be optimised.
2010-07-21 17:19:51 +02:00
Cédric Pasteur
dd660f4424 Added anonymous functions in Minils
- Added Elamba(inp, outp, eq_list) constructor. This
is necessary for iterator fusion.
- Refactored Mls2obc to allow to generate code
for anonymous functions (basically we have to
remember if we are within an iterator, as there is
no nesting of iterators)

There is a known problem with the local vars defined in 
the anonymous function that needs to be declared.
2010-07-21 17:15:19 +02:00
Léonard Gérard
8df666b985 Removed temporarily clocking. 2010-07-21 15:40:55 +02:00
Léonard Gérard
5e737d0094 location change. Heptc works with menhir. 2010-07-21 15:15:57 +02:00
Cédric Pasteur
03608451c4 Use invalid_type 2010-07-20 09:34:11 +02:00
Adrien Guatto
4edc03c163 Mapfold_right for even nicer code. 2010-07-19 17:19:02 +02:00
Adrien Guatto
496919ff63 Yet Another Cosmetic Fix for normalization :-/ 2010-07-19 16:57:47 +02:00
Adrien Guatto
54ada380a1 Cleaner normalization of iterators' arguments 2010-07-19 15:38:12 +02:00
Adrien Guatto
9301ed0b09 Fixes for correct array literal C generation. 2010-07-19 15:16:14 +02:00
Cédric Pasteur
bcc994fb9f No need to collect calls without params
There is no need to collect calls without parameters
as we only need the signature of the function and the code
will be generated when compiling the first file.
2010-07-16 14:35:42 +02:00
Cédric Pasteur
27d5790a20 Do not forget iterators at instantiation time either 2010-07-16 12:33:08 +02:00
Cédric Pasteur
7f4a0954bf Also instantiate nodes called in iterators 2010-07-16 12:26:53 +02:00
Cédric Pasteur
336b6eac00 Simplify a little Mls2obc
We don't need to return the memory vars as they
are already computed
2010-07-16 09:58:56 +02:00
Cédric Pasteur
66078effbd Added support for tuples in normalize
- (v1, v2, ... ) fby (e1, e2, ...) is translated to
(v1 fby e1, v2 fby e2, ...)

This has made the code even more complex. This will
need to be refactored at some point.
2010-07-15 17:58:32 +02:00
Cédric Pasteur
f6d55712bc Revert "Normalize small tweak."
This reverts commit eb39fcffec.

This change is completely wrong (sorry Leonard ...)
2010-07-15 17:04:18 +02:00
Léonard Gérard
eb39fcffec Normalize small tweak. 2010-07-15 16:21:07 +02:00
Léonard Gérard
57b1405731 Basic clocking port. 2010-07-15 16:20:46 +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
4f9d6b2d82 Added v_loc in Minils too 2010-07-15 10:02:42 +02:00
Cédric Pasteur
62e216314d Fixed stupid bug 2010-07-15 09:37:20 +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
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
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
4598b29ad2 Forgot to move this file too 2010-07-13 08:47:02 +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
b0a5a7f13e Heptcheck compiles !! 2010-07-08 15:25:26 +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
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
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
Léonard Gérard
3cc1652425 Minils and signature tweaked further. 2010-07-08 15:12:02 +02:00