Commit graph

690 commits

Author SHA1 Message Date
Cédric Pasteur 7787428f34 Compile fixes 2011-05-25 09:12:10 +02:00
Cédric Pasteur 3ee0e5e7b4 First version of interference.ml 2011-05-25 09:12:10 +02:00
Cédric Pasteur e9316bbf1b Interference graph ported to OCamlGraph 2011-05-25 09:12:10 +02:00
Léonard Gérard d7553b9db0 Fix static_scoping with locally defined types. 2011-05-24 18:33:05 +02:00
Cédric Pasteur 96054a67b6 Correct order for indices in array declaration
In C, the order in the declaration of variables
is the same as for access
2011-05-24 11:16:27 +02:00
Léonard Gérard aea82e79b0 col<100 2011-05-21 15:38:09 +02:00
Cédric Pasteur 72892a9d82 Fixed missing case in Obc_mapfold 2011-05-16 17:30:48 +02:00
Adrien Guatto 36d93a411d Fix generated C code calling between(). 2011-05-12 16:32:52 +02:00
Adrien Guatto a15276f053 Compile with proper include to pervasives.h. 2011-05-12 16:32:52 +02:00
Gwenal Delaval acad16b98a Graphical simulator hepts
Added graphical simulator hepts

Added option -hepts to the compiler: this option formats the output of the simulation loop
to fit with hepts (currently working only on C target code). Typically, suppresses all
"decoration" output, like input or output names, and prints output on single lines.

Currently not implemented in hepts: array types.

Usage: to simulate the node Modulename.f:

heptc -target c -s f -hepts modulename.ept
gcc modulename_c/*.c -o ./f_sim
hepts -mod Modulename -node f -exec ./f_sim
2011-05-12 10:08:13 +02:00
Gwenal Delaval bf4d80c5a3 Correction of Mls_compare for new AST 2011-05-11 14:25:45 +02:00
Leonard Gerard a9aa794b18 Reset optim 2011-05-10 20:52:32 +02:00
Leonard Gerard 75b7ceab5a Allows easy debugging printing of Envs. 2011-05-10 20:29:01 +02:00
Leonard Gerard 1d390848fe real good switch fix.
The order switch then reset was wrong, since some reset reset slower inner blocks and equations, to have reset correct after switch it would have been necessary to sample the reset condition correctly (use r when c) using the level_ck... anyway the order seems now irrelevant considering code size.
2011-05-10 20:28:39 +02:00
Leonard Gerard 09b5e8e54a Rerefixfix switch vd_env 2011-05-10 17:22:24 +02:00
Gwenal Delaval da648254d8 Added type string to pervasives, with string constants in AST 2011-05-10 17:07:17 +02:00
Gwenaël Delaval a1be8130ce Inline pass re-activated 2011-05-10 17:07:16 +02:00
Cédric Pasteur 568dfc59fd Fixed generation of includes in C
The module names must be uncapitalized in includes
2011-05-09 09:50:18 +02:00
Cédric Pasteur 2a9c72154c Fixed renaming of var_dec in Switch
Instead of creating new var_decs for renamed variables,
just copy the one from the original var to 
avoid losing other information
2011-05-05 17:57:57 +02:00
Gwenal Delaval 9e41fcf71f Current Boolean pass for Heptagon 2011-05-05 11:54:38 +02:00
Cédric Pasteur c8055cd1ff Fixed bugs with static records in C generation 2011-05-03 13:21:27 +02:00
Cédric Pasteur b47dc918ec Fixed bug with loading modules
Do not forget to remember loaded modules
2011-05-02 14:27:42 +02:00
Cédric Pasteur fd347cb4e4 Fix generation of bounds check expression 2011-05-02 11:24:12 +02:00
Cédric Pasteur f110727568 Better fix for Normalize_mem
We have to modify the var_dec and arg as they may
have other fields that need to be kept
2011-05-02 11:20:37 +02:00
Léonard Gérard d2eeeee73f fix reset. 2011-04-29 16:24:08 +02:00
Cédric Pasteur a533b0b3f4 Proper fix for init of outputs with last 2011-04-29 15:21:12 +02:00
Cédric Pasteur 29d3c75d55 Proper fix for the problem of scoping of Svar 2011-04-29 15:21:12 +02:00
Cédric Pasteur 59c8106e46 Also use idents for Ewhen in Heptagon 2011-04-29 15:21:12 +02:00
Cédric Pasteur aae38a7844 Use idents for Emerge in Heptagon 2011-04-29 15:21:12 +02:00
Léonard Gérard 670d8962df add useful files 2011-04-29 15:17:01 +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 219c4dbf8d cosmetic 2011-04-29 15:04:47 +02:00
Adrien Guatto 10418197c8 Initial support for return-less external functions.
The compiler still does not support unsafe functions that well. For example, putting an assert()/exit() in an automaton's state does not work correctly.
2011-04-28 15:24:35 +02:00
Cédric Pasteur bed729b448 Fixed typing of const def
Like values, the typed version should be put in
the environment.
2011-04-28 09:28:07 +02:00
Léonard Gérard ba1ff2c06d Fix qualify Svar 2011-04-27 16:37:45 +02:00
Adrien Guatto aa1041319f C backend: do not use memory structs for combinatorial main() functions. 2011-04-27 15:29:33 +02:00
Léonard Gérard f532ccc84c really fix unification 2011-04-27 15:16:17 +02:00
Léonard Gérard b8ee46d58f fix normalize_mem 2011-04-27 14:29:21 +02:00
Adrien Guatto 00cb203dd9 Revert "C generation: fixed struct field name in step() call."
This reverts commit fc920d88ea.
2011-04-27 14:02:50 +02:00
Adrien Guatto fc920d88ea C generation: fixed struct field name in step() call. 2011-04-27 11:53:44 +02:00
Cédric Pasteur 014bc19ab2 Fixed bug in init analysis 2011-04-26 12:43:03 +02:00
Cédric Pasteur 401aaeeb89 Type declarations should also be typed
This is necessary so that the static expressions
appearing in those types are correctly typed.
2011-04-21 16:29:24 +02:00
Léonard Gérard 6b86b86e9d really fix normalize_mem.
in the old fix was missing the renaming, and there was wrong equations
order :
f () returns x
[here rename x by mem_x]
mem_x = fby ...
x = mem_x

so the simplest was :
f () returns out_x
var x;
[ nothing to do]
out_x = x
x = fby ...

pay attention to the order of equations since we are after the
scheduling..
probably it should be done before the scheduling anyway ?
2011-04-20 20:47:06 +02:00
Léonard Gérard 5fb518d8ed Java bugfix 2011-04-20 17:33:50 +02:00
Léonard Gérard 73abbad1f9 small java module fix 2011-04-20 17:24:09 +02:00
Cédric Pasteur 2757e7c1bf Fixed normalized_mem
It inverted the order of equations
2011-04-20 16:23:44 +02:00
Gwenal Delaval 8c4217ab83 Rebase bzr branch on old decade 2011-04-20 14:50:09 +02:00
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)
2011-04-20 12:47:29 +02:00
Gwenaël Delaval 85bbe21d6c Sigali pass into compiler + added a_id field to applications
- Added "z3z" target language, calling sigali code generation

- a_id is application id, so as to identify node applications; added
to Minils AST. a_id is given on hept2mls pass.

This is needed for the controller execution from controller synthesis.
2011-04-20 12:47:28 +02:00
Gwenaël Delaval da37fd8e58 Sigali code generation
Sigali AST and Sigalimain module for sigali code generation
from normalized and Boolean minils program
2011-04-20 12:28:38 +02:00
Gwenaël ac9715ad90 Correction of Boolean pass
Correction of Boolean pass: correct translation of variable declarations,
including full clock translation (in two passes for variable declarations:
one to build the env, one for clock translation).
2011-04-20 12:28:38 +02:00
Gwenal Delaval 0f6ddb739b Correction of Boolean pass
Corrections to handle modifications on AST
(fresh/gen_fresh on idents, Tunit type,
e_base_ck = Cbase everywhere)
2011-04-20 12:28:37 +02:00
Gwenal Delaval 4e267d82c6 Boolean transformation pass (translate every enumeration type to boolean tuples) 2011-04-20 12:28:37 +02:00
Léonard Gérard d6240e1c67 100 and java scalarized 2011-04-19 18:45:56 +02:00
Cédric Pasteur 802178fb28 Added a pass to normalize memories
This adds a copy for outputs that are also
memories.
2011-04-19 17:19:40 +02:00
Cédric Pasteur 845d084658 Preserve the order of type and classes definitions 2011-04-19 13:08:35 +02:00
Cédric Pasteur 073ccc2603 Better handling of static arrays 2011-04-19 12:58:41 +02:00
Leonard Gerard 220db42076 java readded 2011-04-19 11:39:37 +02:00
Cédric Pasteur 740114764c Fixed stupid bug in the order of args 2011-04-19 10:38:48 +02:00
Leonard Gerard 3618ccc8ed parser fix 2011-04-19 10:14:19 +02:00
Cédric Pasteur a2303ec7e1 Other compile fixes
The java backend is disabled temporarily
2011-04-19 09:49:00 +02:00
Cédric Pasteur 3c8fc39745 Fix C backend with new obc ast 2011-04-19 09:23:52 +02:00
Cédric Pasteur 028dfe0468 Fix for nested if and merge with tuples 2011-04-19 09:04:36 +02:00
Leonard Gerard 8da5ce4648 no order in declarations 2011-04-18 19:20:35 +02:00
Cédric Pasteur 03f0d5d89a Fixed stupid bug #1 2011-04-18 17:14:50 +02:00
Leonard Gerard c0602c6df6 etuple removed 2011-04-18 16:09:07 +02:00
Leonard Gerard 5c831db40b removed warning 9 2011-04-18 15:47:25 +02:00
Cédric Pasteur c6aa63b444 Heptc compiles again
AFor now expects expressions instead of static exps
2011-04-18 15:38:42 +02:00
Cédric Pasteur c6991977a0 Missing case in normalize
Distribute also static tuples
2011-04-18 09:52:03 +02:00
Léonard Gérard 5d2f7dfa85 jeudi soir. still on mls2obc. 2011-04-14 20:14:21 +02:00
Cédric Pasteur f57d7f1589 Correct translation for Eupdate and Eupdate_field
As the language is SSA, we should assign each 
element only once.
2011-04-14 15:14:41 +02:00
Cédric Pasteur c23b9256f0 Also forgot to re-enable scalarize 2011-04-14 14:18:24 +02:00
Cédric Pasteur 975418ffff Missing part from last commit 2011-04-14 13:56:24 +02:00
Cédric Pasteur 57bc9f210b Added a generic onfiguration for backends
Each backend gives a function used to 
enable/disable passes, executed before the
beginning of the compilation
2011-04-14 13:53:30 +02:00
Cédric Pasteur 2f346f873c Control optimization as a pass on Obc
There is now a obc_compiler.ml file, as in hept
and minils.
2011-04-14 11:53:39 +02:00
Cédric Pasteur 6f0c9af006 First port of mls2obc
Does not compile yet
2011-04-14 11:17:12 +02:00
Cédric Pasteur e2e8a93656 Hept2mls ported and very simplified
Does not compile yet
2011-04-14 10:00:06 +02:00
Cédric Pasteur d2c4f09aa2 Indentation fixes + remove unnecessary code 2011-04-14 10:00:06 +02:00
Léonard Gérard 12bd4e9c45 Types. 2011-04-14 09:23:38 +02:00
Cédric Pasteur 6adb45c3ad Normalize in Heptagon compiles 2011-04-13 16:21:28 +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
Léonard Gérard 0fc0c3ba5b Java main pretty print 2011-03-23 20:31:26 +01:00
Léonard Gérard 9714cf0be9 Java fix, initialization order 2011-03-23 18:24:25 +01:00
Léonard Gérard 46ed02416b Convolutions and pip working. 2011-03-23 16:53:01 +01:00
Léonard Gérard 0aef6fcb5b pattern_of_idx in right order.
Probably array_elt_of_exp is also wrong.
2011-03-23 16:52:32 +01: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 36061f4518 fixed tests to the new iterator syntax.
Changed (( and )) to (< and >) since it's very common to write )) !
2011-03-21 22:24:37 +01:00
Léonard Gérard b913edcd5e Decade alpha1
On the road to beta is the new Minils AST, for now :

* Heptagon and Obc AST changes,
* Java code generation,
* Recursives Qualnames,
* Various bug fixes,

* 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 22:24:36 +01:00
Léonard Gérard 6b720e6c23 Merge branch 'java'
Conflicts:
	.gitignore
	compiler/global/global_printer.ml
	compiler/main/mls2obc.ml
2011-03-21 22:21:00 +01:00
Léonard Gérard b8b16a7355 blop 2011-03-21 17:41:00 +01:00
Léonard Gérard c602eca062 cgen todo. 2011-03-21 17:41:00 +01:00
Léonard Gérard 02730b8a0b refactoring static evaluation. 2011-03-21 17:41:00 +01:00
Léonard Gérard c96d05b1eb updated todo and refactoring. 2011-03-21 17:40:59 +01:00
Léonard Gérard ecc79c3a53 bug fix n-dimension arrays. 2011-03-21 17:40:59 +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
Cédric Pasteur 35775c4131 C backend ported to recent API changes in Obc 2011-03-09 09:46:00 +01:00
Léonard Gérard cab8bb706e backport from async. 2011-03-09 00:06:36 +01:00
Léonard Gérard 159bab2a55 async constants. 2011-03-08 13:41:28 +01:00
Léonard Gérard 688e0bce71 Bug fix in Typing. 2011-02-14 16:33:49 +01:00
Léonard Gérard 9631d9b311 Typing bug fix. 2011-02-14 16:28:50 +01:00
Léonard Gérard 86f743318b Fixes and basic Java main. 2011-02-14 15:21:57 +01:00
Léonard Gérard c677f76009 Fixes 2011-02-07 16:06:52 +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
Cédric Pasteur 51fea00808 Added TODOs 2011-02-04 12:45:58 +01:00
Léonard Gérard 09419a77a5 again 2011-01-24 16:09:28 +01:00
Léonard Gérard df469db394 New Java backend closing 2011-01-24 16:09:28 +01:00
Léonard Gérard fc08753bd9 tentative 1 de async dans C 2011-01-24 16:09:27 +01:00
Léonard Gérard ed21462706 Add java to the compiling process. 2011-01-24 16:09:27 +01:00
Léonard Gérard 6c763f1eb8 tentative 1 de faire marcher java. 2011-01-24 16:09:27 +01:00
Léonard Gérard e9e8ca382a ml files imported from lucy v3 2011-01-24 16:09:27 +01:00
Léonard Gérard 315527231c Async in Heptagon Minils Obc. 2011-01-24 16:09:27 +01:00
Cédric Pasteur 2b18fcab93 Generate C code for static records
This fixes the test t8.ept
2011-01-18 17:52:44 +01:00
Léonard Gérard 36ec30b3ff Removed unused generic Mmethod in obc. 2011-01-12 13:41:14 +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 0768babab7 Removed brocken and useless mlsc, cleaned heptc. 2011-01-07 17:30:04 +01:00
Léonard Gérard f3584601f0 Refactoring and todo.txt update. 2011-01-05 15:47:53 +01:00
Léonard Gérard 14f3c57d6a Parsing a bit corrected... 2010-12-26 21:39:08 +01:00
Léonard Gérard bb9d96e79d Parse real blocks in resets. 2010-12-16 18:28:33 +01:00
Léonard Gérard 467f4b3250 Clearer compilation targets handling. 2010-12-16 16:52:23 +01:00
Léonard Gérard 67a541339f refactoring [every]. 2010-12-15 23:48:37 +01:00
Léonard Gérard f238f39f4d New reset pass, without switch ! 2010-12-15 23:41:46 +01:00
Léonard Gérard 9e431c0cc7 remove TODO. 2010-12-15 18:35:45 +01:00
Léonard Gérard e174151d37 Unclutter ident printing. 2010-12-15 11:27:19 +01:00
Léonard Gérard ac6dab15ee Switch removing. 2010-12-15 11:26:29 +01:00
Léonard Gérard ac9f805446 Refactoring. 2010-12-15 11:26:29 +01:00
Léonard Gérard 7d3b6a4679 Bug fix Cgen 2010-12-15 11:26:29 +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 83feda2afb And the awaited block.ml ! 2010-12-10 16:46:36 +01:00
Cédric Pasteur ee566aba50 Hept_parsetree_mapfold should also visit type_dec
This fixes a problem with test/good/type_alias.ept
and t8.ept.
2010-12-10 10:18:05 +01:00
Léonard Gérard b85691be35 Bug fix in reset, loosing equations. 2010-12-10 00:42:49 +01:00
Léonard Gérard e39a0484ff Add 'block' to Heptagon. 2010-12-10 00:42:49 +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 5a62ca5335 Fix typing
defnames were not rightly handled in [reset] blocks
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
Léonard Gérard 9998d7ea39 Added a unit type. Tunit. 2010-12-10 00:39:25 +01:00
Gwenal Delaval ed2642f847 Added controllables in every pass 2010-12-08 17:32:24 +01:00
Gwenal Delaval b7cba3315a Compiler option -nocaus
Added a compiler option de-activating causality analysis
2010-12-08 17:31:16 +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
Cédric Pasteur 0bb84532b9 Added a new static scoping pass
This pass transforms exps that should be static 
to Econst se. The regular scoping then only has
to check this case.

The conversion is done in a single traversal of
the AST (unlike the old solution).
2010-11-20 17:39:24 +01:00
Cédric Pasteur b5fb821a4c Fix hept_parsetree_mpafold
It had never been used so it wasn't correct. 
Added some missing cases.
2010-11-20 17:31:55 +01:00
Adrien Guatto 5c8e1a47fe Tomato: stop trying to be smart about tuples
Removed Elimtuples module.
2010-11-10 15:46:32 +01:00
Adrien Guatto 6153d1f65f Tomato: more readable generated identifiers.
When generating a new equation name for an equivalence class,
we now only use the names from the original program if possible.
2010-11-10 15:45:41 +01:00
Adrien Guatto c7b83b7381 Fixed comparison functions which were blatantly wrong.
Previous versions weren't antisymmetric.
2010-11-10 15:45:41 +01:00
Léonard Gérard 684f3337f8 Removed unused arguments in mls2obc 2010-11-05 16:27:45 +01:00
Léonard Gérard 3e2fb0b4b1 Rename [lhs] to [pattern] in obc
lhs was verrrry bad.
2010-11-05 16:27:44 +01:00
Léonard Gérard a273170a31 Allow "type t = A" instead of forcing "A | ..." 2010-11-04 18:10:20 +01:00
Léonard Gérard f2bc010135 Much better error msg when typing merge and when. 2010-11-04 18:09:32 +01:00
Léonard Gérard 7013a01f83 clock fix. 2010-11-04 18:08:40 +01:00
Léonard Gérard 26b30b9bac Small code comments. 2010-11-04 18:07:17 +01:00
Léonard Gérard 7b4f34a521 Cgen only stdbool.h booleans no more TRUE and FALSE. 2010-11-04 18:06:11 +01:00
Léonard Gérard b57676eee3 Added 'when', 'merge' to the parsing and scoping. 2010-11-02 11:32:40 +01:00
Léonard Gérard a22f7216f2 Added when and merge to heptagon. Need tests !
Clocking is still done in minils since it is way simpler.
2010-11-01 01:05:37 +01:00
Léonard Gérard 9414fdc5a8 Initialization with pretty errors. 2010-10-08 14:40:08 +02:00
Léonard Gérard ea4ef2583b Fix print location.
It was not respecting boxes by using a \n instead of a @\n.
2010-10-08 14:34:31 +02:00
Léonard Gérard afcd53cebb Initialization Small big bug fix. 2010-10-08 10:46:09 +02:00
Léonard Gérard 99cf52a10f Initialization reworked. Old good tests are now bad ! (they were bad in fact). 2010-10-07 20:19:03 +02:00
Léonard Gérard c47e371a11 assigned a TODO in obc. 2010-10-07 20:19:02 +02:00
Léonard Gérard ff2b512600 Tidying typing up. 2010-10-07 20:19:02 +02:00
Adrien Guatto 6ff8ed993f Switched back to plain strings for some compiler options.
To be consistent or to be convenient, that is the question.
2010-10-04 00:35:12 +02:00
Adrien Guatto 381e4e84f7 Csubst: added missing recursive call for array indexes. 2010-10-02 13:22:04 +02:00
Adrien Guatto 7b6690d443 Cgen: proper assignment from structs. 2010-10-02 13:19:21 +02:00
Adrien Guatto 0ce7b4efb0 Cgen: proper assignments from constant variables. 2010-10-02 13:17:12 +02:00
Adrien Guatto 412fd1f81b New operator: modulo (written (%))! 2010-10-02 13:01:35 +02:00
Adrien Guatto d57196bb24 Added missing error reporting during scoping pass. 2010-10-01 17:04:27 +02:00
Adrien Guatto faf232ad64 Fixed silent error (missing @.) 2010-10-01 16:49:11 +02:00
Adrien Guatto 4044d8a0a2 Automata minimization. 2010-09-30 21:52:32 +02:00
Adrien Guatto a4c3d9e856 Relevant command-line options are now stored as qualnames. 2010-09-30 21:40:04 +02:00
Adrien Guatto 6bdca86253 Comparison functions for types, clocks and minils expressions. 2010-09-30 21:39:53 +02:00
Adrien Guatto 1fd2f374ff New misc functions, renamed make_list_compare to list_compare.
New functions fold_right_i and option_compare.
2010-09-30 19:24:41 +02:00
Adrien Guatto 3d860c3624 Idents: rename compare to ident_compare 2010-09-30 19:13:43 +02:00
Léonard Gérard 6da5171e6a Flatten arguments fix in cloking. 2010-09-27 18:16:00 +02:00
Léonard Gérard acdd480e0c Suit up Hept_parsetree.
small changes and comments.
2010-09-20 23:31:49 +02:00
Léonard Gérard 8f0f0598de Small comments. 2010-09-18 22:30:43 +02:00
Cédric Pasteur 77a9dde027 Fixed problem with stdlib
The preprocessor has to parse the compiler_options.ml
file now.
2010-09-15 10:27:53 +02:00
Cédric Pasteur 65f1a076d8 Re enable Initialization
That was easy to fix...
2010-09-15 09:58:35 +02:00
Cédric Pasteur db732621a1 Re enabled iterator fusion
Added an option to enable it (off by default)
2010-09-15 09:53:20 +02:00
Cédric Pasteur d913e1be89 Move options doc to the correct file 2010-09-15 09:43:28 +02:00
Cédric Pasteur df12e081ae Refactored Misc
Created two new files: 
 - utilities/global/compiler_options.ml: contains
 the options that can be set using the cli
 - utilities/global/errors.ml: contains global
 errors definition

Misc now only contains helper functions that have 
nothing to do with the ast or the compiler.
2010-09-15 09:38:52 +02:00
Cédric Pasteur 8dad10f39b Port heptcheck to recent changes 2010-09-14 17:22:52 +02:00
Cédric Pasteur 6e5e7ec814 Fix numbers in error messages 2010-09-14 17:15:43 +02:00
Cédric Pasteur cae8d39f3d Renamed exp_ty label to ty for consistency 2010-09-14 17:14:27 +02:00
Cédric Pasteur 5e73f46f7e Remove some unused code in Typing 2010-09-14 13:29:27 +02:00
Léonard Gérard 02db2ad6b4 Changed compile flags, and cleaned a bit.
Warn as error for partial match.
Warn for unused variables : added some TODO to check.
PS : I'll deal with callgraph which is doing things that Modules does.
2010-09-14 09:39:02 +02:00
Cédric Pasteur 4a5c9130e7 Updated version of Hept_printer
The code is much clearer but it should print
mostly the same thing.
2010-09-13 17:04:13 +02:00
Cédric Pasteur d8dffe15d8 Fixed remainings non exhaustive patterns
Now the only shown warnings are the X type that 
we don't care about
2010-09-13 16:02:33 +02:00
Cédric Pasteur 5aa83246ca Use qualnames for types and fields in C
We need qualnames because we try to find types and
fields in the environment during the generation of
the code.
2010-09-13 15:20:25 +02:00
Cédric Pasteur 50223653a4 Do not forget to flush the output
The end of some header files was not printed.
2010-09-13 15:20:17 +02:00
Cédric Pasteur 1857cb7c47 Identifiers only need to be unique inside a node 2010-09-13 15:20:09 +02:00
Cédric Pasteur 0b5d1cd471 Do not print Pervasives 2010-09-13 15:20:01 +02:00
Cédric Pasteur 0b12e6a4ae Enum in Obc should also be qualnames 2010-09-13 15:19:52 +02:00
Cédric Pasteur 3d02b85bd6 Fixed some non exhaustive pattern matchings
Added assert_n functions to decompose to get a
tuple from a list of known size, and assert_nmin
when the list has at least n elements.
2010-09-13 15:19:40 +02:00
Léonard Gérard 3a0429f93f Merge branch 'qualified_ast'
Conflicts:
	compiler/obc/c/cgen.ml
2010-09-13 12:50:10 +02:00
Léonard Gérard 412425301a Added Sfield to differentiate from Sconstructor. 2010-09-13 12:05:10 +02:00
Léonard Gérard d00ad67abb unbound types and vars fixed. 2010-09-13 11:39:23 +02:00
Cédric Pasteur ecd3f0fbd8 Support tuple args in normalization 2010-09-13 11:37:50 +02:00
Cédric Pasteur cba5f4893e Move cases for arrays operators
Only functions that modify si or j needs to be
in translate_equation. The others should be in 
translate_act.
2010-09-13 11:23:52 +02:00
Cédric Pasteur 134c7a2498 Fix normalization of ^n operator 2010-09-13 11:23:52 +02:00
Cédric Pasteur 0e6eb98bf7 Do not add consts to env again 2010-09-13 11:23:52 +02:00
Léonard Gérard e0e7bba733 Removed wrong sanity check in modules. 2010-09-13 11:06:42 +02:00
Cédric Pasteur 4cc18831b4 Remove useless code 2010-09-13 11:04:17 +02:00
Cédric Pasteur cb521c9b68 Fix the (commented) code that prints an exp 2010-09-13 10:20:24 +02:00
Cédric Pasteur a3e1d8a5f9 Make sure that idents have unique names
Make sure that Idents.name returns two different 
strings for two different idents. This fixes a 
problem with variables in two automaton states 
with the same name (as shown by test/good/name_clash.ept).
2010-09-13 10:18:52 +02:00
Cédric Pasteur ffdd378cec Make sure the error is printed last 2010-09-13 10:10:40 +02:00
Cédric Pasteur 653de74a9d Print qualnames with prefix in C code
A qualname is printed as Qual__name
2010-09-13 09:37:58 +02:00
Cédric Pasteur 5da49aa30d Re enable typing 2010-09-13 09:36:45 +02:00
Cédric Pasteur b6561c4a9f Fixed bug in Callgraph
Only add new nodes to the environment.
2010-09-13 09:12:10 +02:00
Cédric Pasteur 36addab3cc Use qualnames in Obc too 2010-09-13 09:03:15 +02:00
Léonard Gérard fd4d0942f4 Support tuples as args in Typing
Ported CP : 18e17a6fba37f9207937c9b60f0ad851c6e5b719
2010-09-13 01:21:35 +02:00
Léonard Gérard a58c729ae2 clocking tweak. 2010-09-13 01:18:45 +02:00
Léonard Gérard cb86418cb3 Small callgraph todo. 2010-09-13 01:18:07 +02:00
Léonard Gérard b5f6593e18 Useful debug printing function. 2010-09-13 01:17:31 +02:00
Léonard Gérard d20a77e181 Removed one nasty bug in modules.ml 2010-09-13 01:14:03 +02:00
Léonard Gérard 937d1f580b Add Warning when encountering not typed expression when cloking. 2010-09-12 23:58:21 +02:00
Léonard Gérard a72ab6fa08 Removed debug g_env printing. 2010-09-12 23:55:54 +02:00
Cédric Pasteur 0fa3d1efb1 Fixed problem in Typing 2010-09-10 17:24:02 +02:00
Léonard Gérard 9cc3176771 Modules fixed... Pay $$$ attention to partial application and mutable fields. 2010-09-10 17:11:34 +02:00
Léonard Gérard 9ccb6db03f Fix, see bugs. ( we probably want a pass to try to convert every exp to static_exp *) 2010-09-10 17:10:53 +02:00
Léonard Gérard 8a396074fa Allow compilation without mls_parsing etc. 2010-09-10 17:10:06 +02:00
Léonard Gérard 44e7a84c00 Automata fixed. 2010-09-10 17:09:50 +02:00
Cédric Pasteur cc039ac42d Make heptc compile 2010-09-10 14:29:13 +02:00
Léonard Gérard 1e5697b29a Removed Interface since it's job is now done during the scoping.
Moved printing stuff to Global_printer.
2010-09-10 14:06:33 +02:00
Cédric Pasteur f6fb5861ce Make Typing compile 2010-09-10 13:59:38 +02:00
Cédric Pasteur 1d1f398e8a First try at updating Typing 2010-09-10 13:42:45 +02:00
Cédric Pasteur e4e429d3fc Add the signature of a node during scoping
It was done for signature but not for node def
2010-09-10 13:41:23 +02:00
Léonard Gérard 43b8bc15b0 Some Cgen fixes. 2010-09-10 11:53:55 +02:00
Léonard Gérard eda43043d5 bug fix in is_struct 2010-09-10 11:47:11 +02:00
Léonard Gérard 9cf0130512 Better scoping messages. 2010-09-10 11:46:50 +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
Léonard Gérard 52f351b0d3 ast pretty finished 2010-09-07 16:28:01 +02:00
Léonard Gérard f9b88a27b8 Small fixes to the compilation processes.
*Locations should be pretty damn good now.
*Mlsc is close to be up-to-date, still need a scoping pass etc (to be posted soon)
2010-09-07 16:28:01 +02:00
Cédric Pasteur bbf5e85999 Mapfold for Hept_parsetree 2010-09-06 14:45:39 +02:00
Cédric Pasteur 88691354de Remove useless code 2010-09-06 14:45:24 +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
Cédric Pasteur 2956e6feb4 Fix printing of arrays in C code
It should be 
  f(int a[5])
instead of 
  f(int *a)
because the second one does not scale for 
multidimensional arrays, eg
  g(int b[10][5]) is ok
but
  g(int **b) is not.
2010-09-03 15:27:58 +02:00
Adrien Guatto 1d8f2f2a85 Removed useless code for old module handling in cgen. 2010-09-03 11:50:52 +02:00
Léonard Gérard 1cf00d305e verbose printing on std_err... 2010-09-02 17:52:42 +02:00
Léonard Gérard aad7b29c30 small print debugging tweaks. 2010-09-01 14:42:44 +02:00
Léonard Gérard 5c09abeb18 Revet last commit a5f89876c2 and gives the right fix.
Plus remove all the forbidden '\n', replaced with '@.' or '@\n' depending on context.
2010-09-01 14:40:31 +02:00
Adrien Guatto a5f89876c2 Fixed missing new-line in scoping/typing error reporting. 2010-08-31 18:15:51 +02:00
Léonard Gérard 30c786c06e Some more clean up with formatter and so on. 2010-08-29 22:30:51 +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
Léonard Gérard aef39b8036 Callgraph_mapfold polished. 2010-08-24 17:30:19 +02:00
Léonard Gérard 9df4f625a2 Fixed location to use formatter instead of out_channel. 2010-08-24 17:29:00 +02:00
Léonard Gérard 64c44efad5 Cosmetic mls_printer changes. 2010-08-24 17:13:28 +02:00
Léonard Gérard c4a926f489 Correct Mapfold !! Or at least much more than before.
Still not sure whether the notion of main_nodes is correct.
A parametrized node not used right in the module gets removed.
Is that the wanted behaviour ?
2010-08-24 11:07:05 +02:00
Adrien Guatto 4c909ee39d Fixed erroneous doc for Eupdate 2010-08-19 12:39:32 +02:00