- May 27, 2008
-
-
Erwan Jahier authored
work yet though (returns the wrong type). Also add the struct printer, and fix a bug in the static argument printing.
-
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
-
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
they were not abstract.
-
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 15, 2008
-
-
Erwan Jahier authored
t, and a node returning such a t, the compiler was actually returning the type definition of t (instead of the abstract type). In order to fix that, it was necessary to add in argument of Lazycompiler.solve_x_idref a flag (named provide_flag) indicating whether the item being compiled appears in the provide, or in the body part of the package. This fix triggered another bug that we also fix: indeed, it is not correct to return a compile error when the provided parameters of a node is not equal to its implementation. Indeed, such parameters can be abstract type that are defined in that package. The test "should_work/packEnvTest/packages.lus" is now ok.
-
- May 07, 2008
-
-
Erwan Jahier authored
type 'a hereflagged = Here of 'a | NotHere of Ident.long into type 'a elt = Local of 'a | Imported of Ident.long * static_arg list i.e., i am basically doing two things: - fix poor naming - adding static arg to nodes indeed, when compiling an equation that involves nodes defined in another package, I need to check that the static args and the static params match. Therefore I need to have the static params ! Therefore I add them (I will use them in the next commit). Moreover, in SyntaxTreeCore.node_info, the static_params list was an option type, which is a bit weird (empty lists are enough to represent node with no static params).
-
- Apr 02, 2008
-
-
Erwan Jahier authored
in the shoud_work directory!).
-
Erwan Jahier authored
For non-regression tests, do not use Lazycompiler.test function anymore and just use LazyCompiler.node_check instead. put in the new file compiledDataDump.ml all the stuff related to string convertions of CompiledData items.
-
- Mar 28, 2008
-
-
Erwan Jahier authored
and anonymous structures. I've even found some type errors in the non-reg files!
-
- Mar 17, 2008
-
-
Erwan Jahier authored
EvalNode.f -> GetEff.node, EvalType.f -> GetEff.typ, EvalEq.f -> GetEff.eq EvalConst.f (val_exp -> const_eff list) should have been put there too, but in fact EvalConst.f ougth to be splitted in two parts: - val_exp -> val_exp_eff (but this function already exist) - val_exp_eff -> const_eff list Therefore, the signature of EvalConst.f will be changed to: val_exp_eff -> const_eff list (and will use GetEff.val_exp) Ditto for eval_array_index. eval_array_index : CompiledData.id_solver -> SyntaxTreeCore.val_exp -> int -> int ougth to be splitted into two functions: - CompiledData.id_solver -> SyntaxTreeCore.val_exp_eff - SyntaxTreeCore.val_exp_eff -> int -> int Ditto for eval_array_size eval_array_size : CompiledData.id_solver -> SyntaxTreeCore.val_exp -> int ougth to be splitted into two functions: - CompiledData.id_solver -> SyntaxTreeCore.val_exp_eff - SyntaxTreeCore.val_exp_eff -> int arg... evalConst.f est utilis par GettEff.typ !!!
-
- Mar 14, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
Erwan Jahier authored
values could not be exported, while expandPack.ml was exporting it.
-
Erwan Jahier authored
This is done via the new module EvalEq. A lot of new errors appear in the on-reg tests, which is normal as quite a lot of the code is now used...
-
- Mar 06, 2008
-
-
Erwan Jahier authored
i.e., a = operator +(1,3); or a = map<<operator +>>(l); This is to simplify the syntax tree. We migth undo this change in the future, or perform the same thing differently.
-
Erwan Jahier authored
-
- Feb 26, 2008
-
-
Erwan Jahier authored
-
- Feb 21, 2008
-
-
Erwan Jahier authored
around a lexing bug that I don't know how to fix yet.
-
Erwan Jahier authored
Add Some lustre files that are automatically tested thanks to the generic Makefile (from the Youssef compiler). Test files are organized as follows : - files in directories that are under the "should_fail" directory do triggers errors, but it is intented should_fail/syntax should_fail/type should_fail/semantics - and files that should not trigger any error: should_work/
-