- Jun 26, 2008
-
-
Erwan Jahier authored
Not yet implemented (assert false): iterators, struct Add a UnifyClock module, and rename Unify into UnifyType. nb : a lot of test are now broken, because - the clock checking is now plugged ;-) - iterators, struct are not yet implemented
-
- Jun 09, 2008
-
-
Erwan Jahier authored
type_eff_ext into type_eff btw). The rationale is to be able to type alias on polymorphic nodes (cf test/should_fail/semantics/bad_call03.lus, that now have a correct error msg). It also makes to code more compact (no more translation from one to the other), and more general (type_eff_ext being more general than type_eff). User polymorphic nodes should be easy now. move all the code in parsey.mly into parserUtil.ml (ease the debug).
-
- Jun 05, 2008
-
-
Erwan Jahier authored
and PredefEvalClock.
-
- Jun 03, 2008
-
-
Erwan Jahier authored
SolveIdent.recognize_predef_op that replaces node call by Predef constructor when necessary, via a complete traversal of the SyntaxTree (instead of doing it in the parser). The rationales for this change are that: - it is quite tedious to do it in parser as multiple locations are involved - I did missed some locations - It makes the parser more focused on parsing issues - that traversal is a first step do deal with idref solving (hence the name of the new module that contains that function Note that lsrc/test/should_work/fab_test/lecteur.lus was using "plus" as a variable ident, which raised an error, which
-
- Jun 02, 2008
-
-
Erwan Jahier authored
before '..'.
-
- May 28, 2008
-
-
Erwan Jahier authored
of "red<<if, 3>>". Put the unification stuff in a dedicated module, and add some random unit tests to it.
-
- May 27, 2008
-
-
Erwan Jahier authored
when trying to unify, e.g., "a^3" and "int^3". Such kind of things occured when one imbricates iterators. In fact, it was not possible to get it rigth with the data representation used for node profiles, which was not sufficiently general.
-
Erwan Jahier authored
work yet though (returns the wrong type). Also add the struct printer, and fix a bug in the static argument printing.
-
- May 26, 2008
-
-
Erwan Jahier authored
overloaded operator. Moreover, do not try to check that int or real constant are ok. It is the role of the host language.
-
Erwan Jahier authored
-
Erwan Jahier authored
performed. The resulting code is both more compact, and more general. It is more general, since that predef operators are now represented by node_exp_eff, exactly as user nodes. Hence, all the functions that were operating on user nodes via node_exp_eff (such as, node aliasing) works for free on predef op! In order to be able to perform that generalisation, it was necessary to extend sligthly the data structure used to represent the node profile in CompiledData.node_exp_eff with information indicating if a variable is polymorphic or overloaded. Not that, currently, polymorphic or overloaded variables can only be introduced by predef operators. But I think it would be easy to add those notions for normal user nodes after this change. New non-reg files boolred now compiles. Those involving - boolred - alias on predef.op
-
- May 21, 2008
-
-
Erwan Jahier authored
Also, node aliased to other nodes were handled poorly: I was replacing in the syntax tree the node by its alias. Now, I really define the alias node using the aliases one. For instance, node toto(x:t) returns (y:t); let ... tel node titi = toto; node tutu(...) returns(...); let ... z = titi(a); tel was compiled into node toto(x:t) returns (y:t); let ... tel node tutu(...) returns(...); let ... z = toto(a); tel Now, I generate node toto(x:t) returns (y:t); let ... tel node titi(i1:t) returns (o1:t); let o1 =toto(i1); tel node tutu(...) returns(...); let ... z = titi(a); tel which is equivalent, but closer to the original program.
-
- May 20, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
Erwan Jahier authored
-
Erwan Jahier authored
(support for fill, red, etc. is coming soon). In order to add support for iterators, I have extended the by_pos_op (and the by_pos_op_eff) data type with a list of static arguments. In other words, iterators are handled as a particular case of predefined operators.
-
- May 02, 2008
-
-
Erwan Jahier authored
not compile them is (well, was) the default...). also, during pretty-printing, remove the type in the constant definition (e.g., "const x = 42;" instead of "const x = 42:int;"), except if it is an abstract constant of course
-
- Apr 02, 2008
-
-
Erwan Jahier authored
tests. Also, Add the possibility to have several lustre files in the command-line arguments. remove the power operator. Define a lustre.lus that contains a packaged version of Lustre predefined operators. It will be in the standard lustre library, and should be accessible directly (path).
-
- Mar 28, 2008
-
-
Erwan Jahier authored
and anonymous structures. I've even found some type errors in the non-reg files!
-
- Mar 20, 2008
-
-
Erwan Jahier authored
operators. Predef contains the abstract syntax of those operators (taken for SyntaxTreeCore.by_pos_op), and PredefSemantics contains: - const_eval: that says how to statically evaluate constants - type_eval: that provides the type profile of predef operators - clock_eval: that provides the clock profile of predef operators The code in EvalConst that dealt with predef const evaluation is now in Predef.const_eval
-