53 Commits (58086190eb03163873ce007fdce0441f6af0acb7)

Author SHA1 Message Date
Gwenaël Delaval 58086190eb Headers and license file for GPL
Headers for every source file (excluding examples), mentioning
authors, copyright and license (GPL)

COPYING file with GPLv3 content.
12 years ago
Gwenal Delaval bb0bc8bfe5 Added local assume/guarantee
Added local assume/guarantee in contracts.

No syntax associated to these local asume/guarantee: internal use only.
12 years ago
Léonard Gérard 8a78bc7d7d Add [external] in the signatures. fix callgraph acordingly. 12 years ago
Cédric Pasteur 2fc0435393 Added simple printf
Typing and clocking done
13 years ago
Léonard Gérard b49c37f7bf Add ways to declare unsafe functions + unsafe fix 13 years ago
Cédric Pasteur 04b8853a1d Added a new reinit operator
It has type:
reinit: t at r * t -> t at r

It can be used to put a constant value in a 
location.
13 years ago
Cédric Pasteur 8cc879be7a Generate code from interface (.epi) files
It includes the definition of types, constants
and prototypes defined in the interface.
13 years ago
Gwenaël Delaval c57b71b6aa Merge branch 'bzr' into decade
- Added Boolean module (enum types to boolean vectors)
- Added Hept_clocking analysis, called before Boolean
- Added z3z target from minils (sigali format)
- Bug corrections in Normalize, Normalize_mem

Conflicts:
	compiler/heptagon/analysis/typing.ml
	compiler/heptagon/heptagon.ml
	compiler/heptagon/parsing/hept_parser.mly
	compiler/heptagon/parsing/hept_parsetree.ml
	compiler/heptagon/parsing/hept_scoping.ml
	compiler/main/hept2mls.ml
	compiler/main/heptc.ml
	compiler/main/mls2seq.ml
	compiler/minils/minils.ml
	compiler/minils/transformations/normalize_mem.ml
	test/check
13 years ago
Cédric Pasteur 7d95b95ed7 Merge branch 'memalloc' into decade
Conflicts:
	compiler/global/signature.ml
	compiler/heptagon/analysis/typing.ml
	compiler/heptagon/hept_printer.ml
	compiler/heptagon/hept_utils.ml
	compiler/heptagon/heptagon.ml
	compiler/heptagon/parsing/hept_parser.mly
	compiler/heptagon/parsing/hept_parsetree.ml
	compiler/heptagon/parsing/hept_scoping.ml
	compiler/heptagon/transformations/switch.ml
	compiler/main/hept2mls.ml
	compiler/minils/minils.ml
	compiler/minils/mls_printer.ml
	compiler/obc/c/cgen.ml
	compiler/obc/control.ml
	compiler/utilities/misc.mli
13 years ago
Brice Gelineau c70d34ec06 Preliminary version of multidimensional iterators. 13 years ago
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
13 years ago
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.
13 years ago
Brice Gelineau 938e8897b2 n-ary Sarray_power Earray_fill 13 years ago
Leonard Gerard a8215c8083 compile ! nearly all tests passed. 13 years ago
Leonard Gerard 22354aca0a a_clock in signatures 13 years ago
Cédric Pasteur ebf8b354bd Fixed conflict in parsing with split 13 years ago
Cédric Pasteur 2b2cba8e2d Added split operator 13 years ago
Cédric Pasteur 6332ac7a10 Added init construct
It is part of a pattern, eg:
  (init<<r>> x, y, init<<r2>>) = f()
13 years ago
Cédric Pasteur 6c9d9e90d1 Linearity annotations in the AST 13 years ago
Gwenal Delaval da648254d8 Added type string to pervasives, with string constants in AST 13 years ago
Gwenaël Delaval 243fe4b4c7 Keyword "inlined" for nodes
Added a keyword "inlined": "inlined f(x)" is intended to
inline only this application. (not effective yet)
13 years ago
Léonard Gérard d6240e1c67 100 and java scalarized 13 years ago
Leonard Gerard 8da5ce4648 no order in declarations 13 years ago
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
13 years ago
Cédric Pasteur 99eeacbceb Added mapi iterator
The last argument of the iterated function is the
index of the element in the array.
13 years ago
Léonard Gérard b8b16a7355 blop 13 years ago
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])
13 years ago
Léonard Gérard cab8bb706e backport from async. 13 years ago
Léonard Gérard 159bab2a55 async constants. 13 years ago
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.
14 years ago
Léonard Gérard 315527231c Async in Heptagon Minils Obc. 14 years ago
Léonard Gérard e39a0484ff Add 'block' to Heptagon. 14 years ago
Léonard Gérard 9a69c30dc5 Clock annotation in Hept AST 14 years ago
gwenael delaval 4d5cc091d7 Add "with" syntax
Add with syntax on AST, parsetrees, parsers and printers
14 years ago
Léonard Gérard b57676eee3 Added 'when', 'merge' to the parsing and scoping. 14 years ago
Léonard Gérard acdd480e0c Suit up Hept_parsetree.
small changes and comments.
14 years ago
Léonard Gérard 8f0f0598de Small comments. 14 years ago
Léonard Gérard 412425301a Added Sfield to differentiate from Sconstructor. 14 years ago
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.
14 years ago
Léonard Gérard 418b961293 Small fixes to the compilation processes.
*Locations should be pretty damn good now.
*Mlsc is up to date, still need a scoping pass (to be posted soon)
14 years ago
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.
14 years ago
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.
14 years ago
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.
14 years ago
Cédric Pasteur b85f9ab456 Use a block in reset (instead of a list of eqs)
- Most transformation passes expect that list of
equations are always nested inside a block.

This fixes a problem with a duplication of
equations in Automata_mapfold.
14 years ago
Léonard Gérard 5e737d0094 location change. Heptc works with menhir. 14 years ago
Cédric Pasteur b2c88810c5 Make Heptagon API more uniform
Use a block instead of variable list + equation list
for contract and node.
The new program transformations based on the 
mapfold iterator are now enabled by default.
14 years ago
Cédric Pasteur fac69ac2fa Remove controllables from parser 14 years ago
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.
14 years ago
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).
14 years ago
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).
14 years ago