Commit graph

498 commits

Author SHA1 Message Date
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