Commit graph

62 commits

Author SHA1 Message Date
Brice Gelineau c70d34ec06 Preliminary version of multidimensional iterators. 2011-06-28 17:50:42 +02:00
Léonard Gérard 83b0182874 Merge branch 'clocked_inputs' into decade
Conflicts:
	compiler/heptagon/analysis/typing.ml
	compiler/heptagon/parsing/hept_scoping.ml
	compiler/heptagon/parsing/hept_static_scoping.ml
	compiler/main/mls2obc.ml
	compiler/obc/c/cmain.ml
2011-06-28 14:46:43 +02:00
Léonard Gérard 108981c0eb Static constraints in the source. Equal removed
( = ) in pervasives is a stub, it will be typed in a polymorphic way.
This is necessary to have a simple way to transform exp into a static_exp
even when there is the = operator.
2011-06-09 14:53:40 +02:00
Brice Gelineau 938e8897b2 n-ary Sarray_power Earray_fill 2011-05-26 18:43:30 +02:00
Léonard Gérard fbfa6eda1a Add Ewhen to the minils ast, And clocking of iterators.
Ewhen is now the only case of possible recursion for minils exps.
This add was motivated by equations like :
(y,z) = f(x) when c
This equation to be correctly normalized in minils before needed :
y',z' = f(x)
y = y' when c
z = z' when c
But this new variables where needless since the final translation of when c
is the identity.
2011-05-26 15:56:59 +02:00
Leonard Gerard 88497a2da3 parsing clocks. 2011-05-26 15:56:58 +02:00
Leonard Gerard a8215c8083 compile ! nearly all tests passed. 2011-05-26 15:56:58 +02:00
Léonard Gérard 9fa8e7e6ff mk_equation in hept computes the stateful field. 2011-04-29 15:04:47 +02:00
Léonard Gérard d6240e1c67 100 and java scalarized 2011-04-19 18:45:56 +02:00
Leonard Gerard 8da5ce4648 no order in declarations 2011-04-18 19:20:35 +02:00
Leonard Gerard c0602c6df6 etuple removed 2011-04-18 16:09:07 +02:00
Léonard Gérard 5d2f7dfa85 jeudi soir. still on mls2obc. 2011-04-14 20:14:21 +02:00
Cédric Pasteur 611c94bbbd Itfusion moved to heptagon 2011-04-13 15:10:15 +02:00
Cédric Pasteur cbf92beba2 First try at a normalization in Heptagon
I can't see if it compiles yet
2011-04-13 14:40:06 +02:00
Cédric Pasteur 2c7b609d2e Forme normale Minils 2011-04-12 14:07:05 +02:00
Cédric Pasteur 2fdf2855d3 Added a new truncated select operator
a[>e<] returns the element in the array at index
e, a[0] if e < 0 and a[n-1] if e >= n
2011-03-22 22:12:59 +01:00
Cédric Pasteur 99eeacbceb Added mapi iterator
The last argument of the iterated function is the
index of the element in the array.
2011-03-22 09:28:41 +01:00
Léonard Gérard b8b16a7355 blop 2011-03-21 17:41:00 +01:00
Cédric Pasteur b1b8e103f2 Added partial application for iterators
For instance:
  ... = map<<n>> (f<<se>>)((t1, t1'))(t2, t3)

is translated to:
  for(int i =...)
    ... = f(t1, t1', t2[i], t3[i])
2011-03-21 17:22:03 +01:00
Léonard Gérard cab8bb706e backport from async. 2011-03-09 00:06:36 +01:00
Léonard Gérard 8f4411e145 Recursives Qualnames.
In order to have a correct handling of inner classes in Java, and to prepare for modules inside modules.
2011-02-07 14:24:17 +01:00
Léonard Gérard 315527231c Async in Heptagon Minils Obc. 2011-01-24 16:09:27 +01:00
Léonard Gérard d265d7a89b Minimize created exps with invalid_type. 2011-01-12 13:39:21 +01:00
Léonard Gérard 2ae809c971 Fresh vars, and ident refactoring.
Idents.enter_node should be called when entering a node, it is done automagically by the mapfold unless you call directly Hept_mapfold.node_dec.
2010-12-15 11:26:29 +01:00
Léonard Gérard 82caa5a83d Adding a base clock in the Hept AST. 2010-12-10 00:39:25 +01:00
Léonard Gérard 9a69c30dc5 Clock annotation in Hept AST 2010-12-10 00:39:25 +01:00
Gwenal Delaval ed2642f847 Added controllables in every pass 2010-12-08 17:32:24 +01:00
gwenael delaval 4d5cc091d7 Add "with" syntax
Add with syntax on AST, parsetrees, parsers and printers
2010-12-06 18:24:04 +01:00
Léonard Gérard 7013a01f83 clock fix. 2010-11-04 18:08:40 +01:00
Cédric Pasteur cae8d39f3d Renamed exp_ty label to ty for consistency 2010-09-14 17:14:27 +02:00
Léonard Gérard a54e570d0f Hept Scoping should be ok and documented,
Hept Parsing too,
all the reset to review carefully,
Typing to cut from all the scoping.
2010-09-09 19:48:20 +02:00
Léonard Gérard 15448fdff9 mlsc and mls_parsetree etc. 2010-09-07 16:32:08 +02:00
Cédric Pasteur ffff23b675 Remove Elambda
Replace Elambda with a central repository of 
anonymous nodes. It made the AST unnecessarily 
complex.
2010-09-06 14:03:47 +02:00
Léonard Gérard 9eaafe9736 replaced mapfold with callgraph_mapfold. And the fixes to compile. 2010-08-26 13:55:29 +02:00
Adrien Guatto 4c909ee39d Fixed erroneous doc for Eupdate 2010-08-19 12:39:32 +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 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 f124bb4fd7 Refactoring Ident -> Idents ( uniform with Names etc ) 2010-07-23 19:45:19 +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
Cédric Pasteur 03608451c4 Use invalid_type 2010-07-20 09:34:11 +02:00
Cédric Pasteur 4f9d6b2d82 Added v_loc in Minils too 2010-07-15 10:02:42 +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 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
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
Léonard Gérard 3cc1652425 Minils and signature tweaked further. 2010-07-08 15:12:02 +02:00