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
Adrien Guatto
288b0049e4
Improved Obc pretty-printer, still far from perfect.
2010-08-19 12:38:22 +02:00
Léonard Gérard
8bda39eae9
Correct error message with assert false for int_of_static_exp. And some indentation.
2010-08-19 11:28:47 +02:00
Léonard Gérard
d5e9358315
Small mls_printer fixes : empty args should print "()".
2010-08-19 11:28:46 +02:00
Léonard Gérard
8570fe9407
Callgraph_mapfold fix.... not totally fixed... and it's still a big mess.
2010-08-17 23:30:27 +02:00
Léonard Gérard
74faffa423
Mls printing order fix ( const at top of program )
2010-08-17 23:30:26 +02:00
Léonard Gérard
64251c6298
Mls_mapfold fixes to iterate well on types.
2010-08-17 23:30:26 +02:00
Léonard Gérard
a3ac71174c
Static exp instantiation fix.
2010-08-17 23:30:26 +02:00
Adrien Guatto
9df3f8ec54
Print unfolded programs when in verbose mode.
2010-08-17 17:51:11 +02:00
Adrien Guatto
d2979fd4dd
Fixed bug in Sarray_power typing.
2010-08-17 15:26:19 +02:00
Adrien Guatto
fe1475a03e
Typing fix: type static exp initializing a last.
2010-08-17 15:06:08 +02:00
Adrien Guatto
744565250e
Missing new-line for const pretty-printing in Mls_printer
2010-08-17 15:06:08 +02:00
Léonard Gérard
205fa71046
Automata file cleaned a bit, still needs documentation and good comments.
2010-08-15 20:22:18 +02:00
Adrien Guatto
6b87bb5ac0
Fixed confusion in mls2obc: concatenation should be handled at the
...
action level.
2010-08-04 15:36:20 +02:00
Léonard Gérard
4b3c3ba8b5
Revert "Fixed problem in clocking" e3676d1e3c
...
Fixing the actual bug :
* static_exp should not be created without type
after or during the typing pass.
2010-08-03 22:38:42 +02:00
Léonard Gérard
79c4e2a581
Print causality constraints in a human readable shape.
2010-08-02 16:32:40 +02:00
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)
2010-08-02 16:31:57 +02:00
Adrien Guatto
e3a03806e4
Added missing boolean operator: XOR.
2010-08-02 16:14:35 +02:00
Adrien Guatto
41bad3d8c4
C backend: "bool" type mandates the inclusion of stdbool.h
2010-07-30 12:44:12 +02:00
Cédric Pasteur
8f4220e08d
Made Eupdate dynamic
...
Modifying an array with
[ a with [i] = v ]
should expected a dynamic (not static) value
for i (nothing happens if i is in the wrong range).
This is the same behaviour as in Scade and it is
useful eg to modify an array in a foldi.
2010-07-28 12:34:07 +02:00
Cédric Pasteur
3f0005dba1
Open modules during scoping
...
We need to open Modules during scoping so that
we can resolve consts given without a module name.
2010-07-28 10:44:32 +02:00
Cédric Pasteur
c99e29ef74
Make sure to unalias type when checking for arrays
2010-07-28 09:53:16 +02:00
Cédric Pasteur
c2ebaec784
Correct normalization of Ctuple
...
It was not that hard, just had to stop and really
take the time to understand the problem...
2010-07-28 09:39:47 +02:00
Cédric Pasteur
ebc1f326b4
Fixed initialization of (=) operator
2010-07-28 09:39:47 +02:00
Cédric Pasteur
7945ef9eb8
Fixed a problem with simple_exp
...
This enables the parser to accept both
m.x.y
and (m.x).y
2010-07-28 09:39:47 +02:00
Adrien Guatto
d4f441ae19
Fixed missing control in node apps with resets.
2010-07-27 17:56:15 +02:00
Cédric Pasteur
627979534a
Generate correct call for operators
2010-07-27 17:48:21 +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
6d8556c63e
Added missing cases for causality
2010-07-27 17:16:49 +02:00
Adrien Guatto
f7d08ca221
C backend: put the C code for node_decs into the same file.
2010-07-27 16:28:23 +02:00
Adrien Guatto
c328ecb9bd
Obc_utils can now compute dependencies of an Obc program.
2010-07-27 16:28:23 +02:00
Cédric Pasteur
a3b271c948
Allow to write x.f.g
2010-07-27 15:32:39 +02:00
Cédric Pasteur
5b628d3c16
No need to call message directly
2010-07-27 14:14:24 +02:00
Cédric Pasteur
69270e9eb1
Open modules before typing anything
2010-07-27 14:12:27 +02:00
Cédric Pasteur
eb0db1dafc
Call Modules.find_const
...
The exception is intercepted at the level of the
find_const that was redefined in Typing otherwise
2010-07-27 14:12:11 +02:00
Cédric Pasteur
2e44402b03
Two fixes in heptc
...
- Add the directory of the file as an include
- write interfaces with uncapitalized filenames,
as expected by modules.
2010-07-27 14:00:15 +02:00
Cédric Pasteur
5939673999
Catch errors raised during typing of static exp
2010-07-27 13:28:33 +02:00
Cédric Pasteur
56570f904d
Fixed bug with static exp and array_fill
...
The power is now in the static args
2010-07-27 13:22:46 +02:00
Cédric Pasteur
650bbb1c93
A const can be a const from another module
2010-07-27 12:24:51 +02:00
Cédric Pasteur
0e7d9ead1f
Use mapfold for typing consts and signatures
...
Fixes a problem with typing a signature with
consts that depends on previous consts.
2010-07-27 12:09:19 +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
947435f024
Do not forget to put qualified names for node calls
2010-07-26 16:23:21 +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
aa61865b9e
Update names in code
2010-07-26 14:17:24 +02:00
Cédric Pasteur
f24e97fb87
Fixed bug in completion
...
This one was hard to find. The first version of
completion_mapfold used gather in all cases, so
we had to return Env.empty.
The new version does not use gather in the normal
iteration so we have to return the same defnames
as the one given in argument.
2010-07-26 14:16:21 +02:00
Cédric Pasteur
515f9489c4
Rename *_mapfold to regular names
2010-07-26 14:15:00 +02:00
Cédric Pasteur
a81dd0b2b4
Remove old version of files
2010-07-26 14:12:37 +02:00
Cédric Pasteur
db64b6302b
More refactoring in Typing
2010-07-26 12:06:02 +02:00
Cédric Pasteur
e098909086
Refactored build function
...
I am 99 % sure that this doesn't break anything.
2010-07-26 11:36:59 +02:00
Cédric Pasteur
aee247020b
Refactored Typing
...
Created a new pass named Statefull that checks
statefullness related issues.
This change allows to see easily what is done in
this pass, that was scattered all across Typing
2010-07-26 10:59:19 +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
Adrien Guatto
e34ec2a229
Temporary fix.
2010-07-23 13:48:10 +02:00
Adrien Guatto
689a10a328
Cgen: $NODE_mem.h should not include itself.
2010-07-23 12:18:27 +02:00
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.
2010-07-23 10:56:25 +02:00
Cédric Pasteur
89ceb8df76
Fixed duplicate declaration of local vars
2010-07-22 17:38:28 +02:00
Adrien Guatto
7f91ffab53
Output MiniLS code before clocking when in verbose mode.
2010-07-22 11:12:58 +02:00
Adrien Guatto
b1944cf752
Documentation fix for Reset_mapfold
2010-07-22 11:12:58 +02:00
Cédric Pasteur
75774cc685
Refactoring
...
Directly create a obj_dec instead of storing a tuple.
2010-07-22 10:15:11 +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
c12f1add0c
Keep params in Obc
...
Remember the parameters of the called node in the
parametrized version of Obc.
2010-07-22 09:44:57 +02:00
Cédric Pasteur
1be9f1c789
Fixed code generation for Elambda
...
- Added block notion in Obc
- Correct translation to C
2010-07-22 09:36:22 +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
Cédric Pasteur
b6459cdace
Obc_mapfold
...
Because I needed to iterate over Obc and it was
almost as easy to write the generic iterator.
2010-07-21 15:54:41 +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
91aa437264
Check arity of static parameters
2010-07-20 11:35:48 +02:00
Cédric Pasteur
03608451c4
Use invalid_type
2010-07-20 09:34:11 +02:00
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.
2010-07-20 09:31:29 +02:00
Cédric Pasteur
e57c663f43
Do not forget to add created types
2010-07-20 09:17:19 +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
8d07052a0f
Inlining: warn when trying to inline iterators.
2010-07-19 15:22:57 +02:00
Adrien Guatto
9301ed0b09
Fixes for correct array literal C generation.
2010-07-19 15:16:14 +02:00
Adrien Guatto
3a0b1f9e16
New handy function for pretty-printing: wrap_print.
2010-07-19 15:13:56 +02:00
Adrien Guatto
d75f4f8901
Added an option for global inlining (-flatten).
2010-07-19 13:20:11 +02:00
Adrien Guatto
1d6df4ecb2
Inlining pass added. Use with -inline.
2010-07-19 12:02:29 +02:00
Adrien Guatto
2ccdf677f0
Reworded Heptagon mapfold introductory message.
2010-07-19 12:02:29 +02:00
Adrien Guatto
2a72628f20
Stricter mk_longname.
2010-07-19 12:02:29 +02:00
Cédric Pasteur
fac69ac2fa
Remove controllables from parser
2010-07-16 16:08:14 +02:00
Cédric Pasteur
aeca344db5
Automata with mapfold
...
It does not change much the code but at least
we can now see what is important.
2010-07-16 16:01:27 +02:00
Cédric Pasteur
2d10ef84df
Present with Hept_mapfold
...
Seems so simple, I feel like I missed something...
2010-07-16 15:30:51 +02:00
Cédric Pasteur
af2ea1f361
Compile fix
...
Always check that the code compiles before committing.
2010-07-16 15:11:53 +02:00
Cédric Pasteur
da9b353e75
Shorter version of is_statefull
2010-07-16 15:10: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
ac4e46eff9
Remove debug info
2010-07-16 14:16:31 +02:00
Cédric Pasteur
9f7c4da446
Added missing operator
2010-07-16 14:15:26 +02:00
Cédric Pasteur
b6583f22b6
Complete fix for the identifiers problem
2010-07-16 14:09:37 +02:00
Cédric Pasteur
d42e56203b
Fix for identifiers in C
...
Instead of calling cname_of_name before creating
the C ast, keep original names and convert them
when pretty printing the code.
2010-07-16 13:48:37 +02:00
Cédric Pasteur
cdc9b14a44
Fixed problem with multidimensional arrays in args
2010-07-16 12:38:45 +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
778dfdb3f9
Do not loop forever during code generation
...
- Detect when the computation of the static exp
using simplif failed and abort.
- Added a better way to compute operators in
Static
2010-07-16 12:04:51 +02:00
Cédric Pasteur
3f7564aaa6
Fix for code generation
...
A node declared with node is statefull (so has a
context struct) even though it is empty. Use
the global_name ref to get the name of the current
module.
2010-07-16 11:28:01 +02:00
Cédric Pasteur
03f21cc612
Last done with Hept_mapfold
2010-07-16 10:28:26 +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
Léonard Gérard
c3a3f954f4
Typing fix, if this line is actually useful.
...
(and 80 colons fix..)
2010-07-15 14:21:19 +02:00
Cédric Pasteur
94468cae5d
Fixed iterators
...
We need to store the qualified name of the iterated node
2010-07-15 13:41:13 +02:00
Cédric Pasteur
0c1860ccbd
Fixed problem with tuple consts in Mls2obc
2010-07-15 13:12:11 +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
93fef027f0
Keep the list of static parameters in Obc
2010-07-15 11:31:32 +02:00
Cédric Pasteur
aad8545055
Set the correct location for obj_dec
2010-07-15 10:06:16 +02:00
Cédric Pasteur
4f9d6b2d82
Added v_loc in Minils too
2010-07-15 10:02:42 +02:00
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.
2010-07-15 09:56:21 +02:00
Cédric Pasteur
62e216314d
Fixed stupid bug
2010-07-15 09:37:20 +02:00
Cédric Pasteur
1c55689b18
Fixed name
2010-07-15 09:27:59 +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
Léonard Gérard
469e5b86cd
A much better and efficient completion_mapfold.
2010-07-14 02:37:03 +02:00
Léonard Gérard
ce4f1916da
interface_format_version bump ! 10....
2010-07-14 02:37:02 +02:00
Léonard Gérard
1c2929078d
Small tweaks on the hept_mapfold and comments.
2010-07-14 02:37:02 +02:00
Cédric Pasteur
5440a073d6
Fixed generation of C code
2010-07-13 16:23:26 +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
dab569d8ad
Add missing case for ifthenelse
2010-07-13 14:42:46 +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
b8f69492b9
Add mapfold for other types in Signature
2010-07-13 13:55:29 +02:00
Cédric Pasteur
4598b29ad2
Forgot to move this file too
2010-07-13 08:47:02 +02:00
Cédric Pasteur
e2af987967
Compile fix
2010-07-13 08:38:51 +02:00
Cédric Pasteur
30a78632d2
Fix the order of args in the signature
2010-07-12 10:45:00 +02:00
Cédric Pasteur
eb85bfd282
Fix for tuple consts in Initialization
...
We also need a skeleton fun for consts as there
can be a const tuple
TODO : do the same in Clocking ??
2010-07-12 10:22:57 +02:00
Cédric Pasteur
89249e8252
Fix for Initialization
...
Make eg 0 -> (pre x + 1) legal. This is a temporary
fix until safe/unsafe functions are correctly handled.
2010-07-12 10:16:16 +02:00
Cédric Pasteur
c5184b5d66
Booleans can be used in a switch
2010-07-12 09:25:36 +02:00
Cédric Pasteur
eb625cd5d7
Fix operator args (some args have become static)
2010-07-12 09:07:57 +02:00
Cédric Pasteur
af0d28fda0
More refactoring of reset
...
Use exp option to store resets instead of introducing
a new type.
2010-07-09 16:05:31 +02:00
Cédric Pasteur
f752f895ce
Reset_mapfold
...
- Also refactored most of the code (why the hell
would anyone use arrays to iterate over lists
with an index ?!?)
2010-07-09 15:28:26 +02:00
Cédric Pasteur
9e7c013fe2
Completion_mapfold
...
- Added it_gather combinator to create simply
a version of an iterating function using a gather
to combine accumulator values
Completion_mapfold and every_mapfold seems to work
2010-07-09 13:27:06 +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
3153a8f241
Add missing cases
2010-07-09 10:28:16 +02:00
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).
2010-07-09 10:28:09 +02:00
Cédric Pasteur
03b792a220
Fix for scoping
2010-07-09 09:41:29 +02:00
Cédric Pasteur
ad2594ebfa
Cgen compiles
2010-07-09 09:31:12 +02:00
Cédric Pasteur
23e232cd1f
Rewrite Every using Hept_mapfold
2010-07-08 18:13:32 +02:00
Léonard Gérard
000dc91d69
Heptagon and Types mapfold.
2010-07-08 17:41:00 +02:00
Cédric Pasteur
226ddd5c28
Updates for Obc
2010-07-08 17:22:13 +02:00
Cédric Pasteur
b0a5a7f13e
Heptcheck compiles !!
2010-07-08 15:25:26 +02:00
Cédric Pasteur
68ecd0e781
Added consts in the signature of a module
2010-07-08 15:23:13 +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
0e224bf368
Port Static to recent api changes
2010-07-08 15:21:30 +02:00
Cédric Pasteur
587ed634ea
Updated Obc Ast
2010-07-08 15:21:30 +02:00
Cédric Pasteur
72ee834641
Proposition for improved Obc AST
2010-07-08 15:20:55 +02:00
Cédric Pasteur
3690585710
Added static records in static_exp
2010-07-08 15:20:55 +02:00
Cédric Pasteur
0b253d22db
typing_static_exp should return the static exp
...
We need to return the static exp because we have
to replace constructor with their longname.
2010-07-08 15:20:54 +02:00
Cédric Pasteur
cee9eed24a
Moved sequential/ to obc/
2010-07-08 15:20:25 +02:00
Cédric Pasteur
662e81d810
Add location and type to static exps
2010-07-08 15:20:25 +02:00
Cédric Pasteur
2fd0860ba8
Renamed Scoping and Parsetree
2010-07-08 15:19:04 +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
Cédric Pasteur
24cea56666
Add support for any type of constants
2010-07-08 15:18:08 +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
Cédric Pasteur
c46896ca55
Same api change in Heptagon as in Minils
2010-07-08 15:12:34 +02:00
Léonard Gérard
3cc1652425
Minils and signature tweaked further.
2010-07-08 15:12:02 +02:00
Léonard Gérard
50bd90183d
Good static Constructors names.
2010-07-08 15:10:59 +02:00
Adrien Guatto
ed280669ec
Efields and Etuple are op
2010-07-08 15:04:57 +02:00
Léonard Gérard
d58e83a985
Proposition 1.
2010-07-08 15:04:57 +02:00
Adrien Guatto
3698105ccf
C back-end: yet another fix for array literals
2010-07-08 12:49:14 +02:00
Adrien Guatto
7918332353
Temporary fix for array literals.
2010-07-08 12:44:34 +02:00
Cédric Pasteur
d594ace895
This case is unused
2010-07-07 17:03:36 +02:00
Adrien Guatto
0712378133
Fixed output structure allocation in C backend
2010-07-07 14:44:43 +02:00
Cédric Pasteur
c123000eef
Always generate a f_out struct
...
Generate it even if the node has no output. It
should be noted that it is impossible to call
a node without an output in an Heptagon program.
This is only useful to provide a simple interface
eg for the generation of main().
2010-07-07 09:58:23 +02:00
Adrien Guatto
0fbaa0217b
Fixed missing include dir in minils/_tags
2010-07-06 13:35:11 +02:00
Léonard Gérard
65c12884bd
SConst -> Sconst
2010-07-06 11:12:14 +02:00
Léonard Gérard
075cab202a
_tags fix.
2010-07-05 16:10:00 +02:00
Adrien Guatto
3dfdf680ee
myocamlbuild.ml fix for bytecode
2010-07-05 15:15:24 +02:00
Adrien Guatto
2d8e02d844
Fix: typo size_constr -> size_constrs
2010-07-05 12:09:35 +02:00
Adrien Guatto
6b4881ccd0
Revamped testing framework
2010-07-02 16:03:04 +02:00
Adrien Guatto
1113fd7ec1
Yet another refactoring fix
2010-07-02 15:45:50 +02:00
Adrien Guatto
5a6a3c74ac
Fixed refactoring errors.
2010-07-02 15:38:11 +02:00
Adrien Guatto
eaafc5db05
C backend: better array printing
2010-07-02 15:30:46 +02:00
Léonard Gérard
0ae39e8698
Good static Constructors names.
...
Conflicts:
compiler/global/static.ml
compiler/heptagon/analysis/typing.ml
compiler/heptagon/heptagon.ml
compiler/heptagon/parsing/scoping.ml
compiler/minils/mls_utils.ml
2010-07-01 20:00:46 +02:00
Léonard Gérard
de16b4f178
typo Mls_{P->p}arser
2010-07-01 19:41:07 +02:00
Adrien Guatto
a7e34a0a17
C backend: added missing #include
2010-07-01 15:41:07 +02:00
Adrien Guatto
3714cd2a39
C back-end: main() generation updated to the lastest calling convention.
2010-07-01 15:21:11 +02:00
Adrien Guatto
83f02ad86f
C backend: moved main() to its own file.
2010-07-01 14:44:08 +02:00
Léonard Gérard
b93b176383
Mls parsing error handling adapted to menhir
2010-06-30 18:46:40 +02:00
Cédric Pasteur
9448ed23a1
Formatting fixes
2010-06-30 17:30:48 +02:00
Cédric Pasteur
79fb193206
New calling convention in generated code
...
Functions take as arg:
- the inputs
- a 'f_out' structure: if there is at least one
input (whatever their type are)
- a 'f_mem' structure: containing memories and
contexts for child nodes. This is created only for
node (not for fun). A node declared statefull
without any memory will have an empty structure.
2010-06-30 17:30:48 +02:00
Léonard Gérard
7e29ba4057
?? nothing
2010-06-30 17:25:00 +02:00
Adrien Guatto
d0b222b003
Working Menhir parser with --table
2010-06-30 17:00:07 +02:00
Léonard Gérard
562c0ab602
re re Parsing.
2010-06-30 15:45:40 +02:00
Léonard Gérard
6ab18a65ec
Parsing..... again.
2010-06-30 15:45:40 +02:00
Léonard Gérard
92afdbfb98
Mls parsing to ammend.
2010-06-30 15:45:40 +02:00
Adrien Guatto
6e9cd7f490
Fixed missing error reporting.
2010-06-30 14:11:13 +02:00
Adrien Guatto
7d6ed5d30f
Fixed parse error reporting
2010-06-30 14:04:17 +02:00
Cédric Pasteur
01d0cd02c3
Remove bounds hack in Eselect_dyn
...
We no longer need to store the bounds as the
bounds check expression is generated from MiniLS
code where the type is directly available.
2010-06-30 13:46:46 +02:00
Cédric Pasteur
b4419a6760
Better deal with memory less nodes
...
There are now 3 kinds of nodes: Eprim : primitive
nodes, Enode: nodes with memory, Efun: nodes
without memory.
Typing now sets correct eq_statefull and b_statefull
for equations and blocks. Resets are only added
when a node with memory is called.
The calling convention is the generated code needs
to be modified so that we can remove the context
for nodes without memory.
2010-06-30 13:37:54 +02:00
Léonard Gérard
2af3686af2
Mls printer fix.
2010-06-30 03:25:08 +02:00
Léonard Gérard
0c5a8d8ffe
compilers refactoring. and bug fix of heptc vs heptcheck.
2010-06-29 19:21:07 +02:00
Léonard Gérard
2127a1c2d4
Mls printing fix.
2010-06-29 19:21:07 +02:00
Léonard Gérard
88732ef2a9
parsing warning removed.
2010-06-29 19:21:07 +02:00
Léonard Gérard
7c0c2e0415
v_name -> v_ident for idents....
2010-06-29 19:21:01 +02:00
Léonard Gérard
eca36de94b
Moved mlsparsing stuff to minils/parsing.
2010-06-29 19:18:50 +02:00
Adrien Guatto
f35bf95458
Indentation fixes!
2010-06-29 11:18:50 +02:00
Adrien Guatto
ef55c8f9fd
Fixed forgotten AST change in MiniLS.
2010-06-29 11:12:04 +02:00
Léonard Gérard
0f2d046d59
Gros blop pour que Mlsc compile.
...
-* Séparation du fichier minils avec création de mls_utils
-* Lexer et Parser qui fonctionnent (pas complets encore)
-* Use of menhir with --explain pour debug du parser
-* Quelques refactoring (ident/name...)
2010-06-28 18:06:39 +02:00
Cédric Pasteur
3a80061392
Fix compilation
2010-06-28 16:15:44 +02:00
Cédric Pasteur
9105b54c1f
Fix for causality
...
Tuples should behave like ands for nodes that
are not reads or writes of a single variable
2010-06-28 16:12:14 +02:00
Adrien Guatto
ff07d77667
Assertion generation for C back-end.
2010-06-27 23:28:38 +02:00
Adrien Guatto
5db45bd497
Generated C programs now accept a max step command-line argument.
2010-06-27 23:28:38 +02:00
Adrien Guatto
b4ddefa65c
Tabs, trailing ws and long lines shall receive no mercy!
2010-06-26 17:17:28 +02:00
Cédric Pasteur
dece22d0b6
Fix iterators with constant arrays
2010-06-25 13:48:57 +02:00
Cédric Pasteur
9b18eb71a4
Operators can appear in the exp normal form
2010-06-25 13:48:46 +02:00
Léonard Gérard
1a829ea4e0
Mls parser tweak, todos and co added
2010-06-24 05:05:58 +02:00
Cédric Pasteur
21891b8746
Fixed bug in causal
2010-06-24 05:01:11 +02:00
Cédric Pasteur
b360e56893
Unbreak Graph
2010-06-24 05:01:10 +02:00
Cédric Pasteur
4525f5cfd0
More compile fix
2010-06-24 05:01:10 +02:00
Cédric Pasteur
c57ae52862
Do not forget to write the interface file
2010-06-24 05:01:10 +02:00
Cédric Pasteur
744f166e12
Add a missing case in Minils Init
...
The encoding of a reset for e1 -> e2 (in heptagon) is:
if true fby false then e1 else e2
which is well initiliazed even in e2 = pre x.
2010-06-24 05:01:10 +02:00
Cédric Pasteur
7984917b0e
Make the file more readable
...
Use let in and meaningfull names
to show the structure of the functions
(which shows that it is more simple that it
appeared before)
2010-06-24 05:01:10 +02:00
Adrien Guatto
30338a3f38
Removed outdated command-line options.
2010-06-24 04:59:35 +02:00
Cédric Pasteur
8515c533d2
Updated Heptagon printer
...
The indentation is not perfect but this will do.
2010-06-24 04:59:35 +02:00
Cédric Pasteur
db6344921a
Updated Obc printer
2010-06-24 04:56:53 +02:00
Cédric Pasteur
6f2d5175e5
Do not add reset for op
2010-06-24 04:56:53 +02:00
Adrien Guatto
206605a707
Added missing boolean case in MiniLS' print_type.
2010-06-24 04:56:53 +02:00
Cédric Pasteur
0a65964ee6
Put back error in Clocking
2010-06-24 04:56:53 +02:00
Cédric Pasteur
ac87128e54
Put a special case for operators
...
Without this, pre x + 1 cannot be written.
2010-06-24 04:55:15 +02:00
Cédric Pasteur
ccfd3f368a
Disable this for now
2010-06-24 04:55:15 +02:00
Cédric Pasteur
5f1b63b33a
Fix bug with locations
2010-06-24 04:55:15 +02:00
Cédric Pasteur
3b6ca84d8d
Remove code that should only be in memalloc branch
2010-06-24 04:54:46 +02:00
Cédric Pasteur
12224395ae
Fix printing
2010-06-24 04:54:46 +02:00
Cédric Pasteur
5c318ace90
Uniformize labels
2010-06-24 04:54:46 +02:00
Léonard Gérard
15529eed90
Small todo fix, (reactivate error printing in clocking since now the printer works).
2010-06-24 03:32:46 +02:00
Léonard Gérard
fc39057230
Bug in the Makefile ? GENSOURCES removed from .depend dependencies. (circular issue)
...
FIXME Makefile to deal with the news files
2010-06-24 03:31:57 +02:00
Léonard Gérard
9fff8e4ad8
Refactoring and organisation.
...
Separate parser, lexer and printer of hpetagon (Hetp_*) from the minils ones (Mls_*)
ident_of_var -> ident_of_name
get_current_location -> current_loc
2010-06-24 03:30:14 +02:00
Léonard Gérard
60a3ad15f8
move to subfolder compiler.
2010-06-21 11:58:57 +02:00