- Apr 02, 2008
-
-
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 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
-
- 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
by piping the output od find by sort in the test/Makefile.
-
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 11, 2008
-
-
Erwan Jahier authored
predefined nodes. The idea is that the Predef module will contain all the necessary information to build a node_info_eff for each of the predefined operator. It migth makes thing more difficult to deal with overling, but we'll see later how to fix that. Anyway, not all the predefinef operator are overloaded, so...
-
Erwan Jahier authored
used in order to make it homogoneous with what is done in SyntaxTreeCore.ml This commit is related to the previous one actually. Also remove all this story of node_half_eff that is not used (yet), and that may not be useful (we'll see later). Also continue to fix the representation of SyntaxTrreCore.node_info : -> remove the node alias -> put the corresponding infomation in node_body field -> rename node_body field into node_def -> associate to node_def (instead of a body option) a new union type made of Abstract, Extern, Alias of ..., Body of ... This allows us to - remove an "assert false" to deal with node with body and alias (this new presentation makes it impossible) - Deal with Abstract node properly
-
Erwan Jahier authored
change is - make the parser simpler - make the compilation simpler - make everything simpler actually... - accepts more correct programs. - etc. Indeed, before, we had specific syntax nodes for - extern nodes - aliased nodes - abstract nodes - normal nodes which leads to duplicate code everywhere. Now, we have a more generic representation. The nice thing is that the parser is much simpler, and a lot of duplicated code is avoided (for example, extern and abstract nodes do now share the same code). The bad thing is that we have more "assert false" lying everywere due to this «too rich» representation, in order to deal with cases that can never happen. For exemple, we have to do something with nodes that have both an alias and a body. This cannot happen of course, so we issue an "assert false", which is a little bit painful, as it have been rejected by the parser anyway. Moreover, for some reason, external node params could not be clocked, and cannot have static params. Maybe it is not possible to compile such nodes (I don't know yet), but we should not raise a syntax error IMHO. Somehow, what was done was very similar to ask the parser to perform type checking.
-
- Mar 06, 2008
-
-
Erwan Jahier authored
EvalNode.f rename back predef_node into by_pos_op.
-
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
sensible to flushing, which is painful.
-
Erwan Jahier authored
-
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/
-
- Feb 20, 2008
-
-
Erwan Jahier authored
currently only evaluates predef nodes.
-
Erwan Jahier authored
-
- Feb 15, 2008
-
-
Erwan Jahier authored
To do that, we : (1) totally remove (in the ocaml code) the use of "oper", and use "node" instead. Indeed, a node is a memoryfull operator, as opposed to function that are memoryless operators. However, lus2lic does not really care about memoryless and memoryfull information. Therefore I prefer to use node everywhere, and to flag node_info to indicate whether it has memories or not. (2) change the syntaxTreeCore type to make it more general. Indeed, the distinction between functions and nodes was - redundant: extern nodes and (extern) functions were handled differently (NodeExtern versus ExtNode (was named FUNC before)). - and incomplete: it was not possible to provide static parameters to function, nor to define functions with body, etc. Now a function is just a memoryless node. The check that function indeed use no memory will be done later. (3) also, change the parser so that functions with body are accepted. (4) in order to do it step by step, I add the "extern" keyword" so that extern nodes and functions are more easy to parse. I will remove it later.
-
- Feb 14, 2008
-
-
Erwan Jahier authored
-
- Feb 12, 2008
-
-
Erwan Jahier authored
git commit.
-
Erwan Jahier authored
Do not test nodes with static params as it is too difficult to do from the top-level automatically. Indeed, it would require to build effective static arg before, which would require to make node_check mutually recursive with type_check and co. Its not worth the trouble, as such node can be tested anyway if used. LazyCompiler.solve_node_idref: compile (with the new function check_static_arg) static params instead of ignoring them. EvalConst.eval_const -> EvalConst.f for simplicity and homogeneity with the naming scheme used in EvalType.
-
Erwan Jahier authored
Better error msgs. Renaming idents.
-
- Feb 11, 2008
-
-
Erwan Jahier authored
add a debug rule that hides the mli files and make debugging easier w.r.t. var printing.
-
Erwan Jahier authored
-
- Feb 07, 2008
-
-
Erwan Jahier authored
oper -> node func -> extern node node -> (user) node
-
Erwan Jahier authored
turns eq_info into a pair (instead of a struct).
-
Erwan Jahier authored
CALL_BY_NAME -> STRUCT_n STRUCT_EXP_n -> STRUCT_anonymous_n flaged -> flagged
-
- Feb 06, 2008
-
-
Erwan Jahier authored
src/syntaxTreeCore.ml (new file) Split syntaxTree.ml into syntaxTree.ml and syntaxTreeCore.ml. The idea is that lic2loc should be able to use syntaxTreeCore.ml verbatim. src/lxm.ml src/lxm.mli remove pack_name from this module, so that it can be shared with lic2loc too (this is mandatory since it is used by SyntaxTreeCore) src/compile.ml src/compiledData.ml src/evalConst.ml src/evalConst.mli src/evalType.ml src/evalType.mli src/expandPack.ml src/lazyCompiler.ml src/main.ml src/parser.mly src/symbolTab.ml src/symbolTab.mli src/syntaxTab.ml src/syntaxTreeDump.ml src/syntaxTreeDump.mli src/test/Makefile src/test/packs.lus src/test/test.res.exp opening SyntaxTreeCore module, and inline the definition of Lxm.pack_name. Also, begin to replace oper by node or predef_node in identifiers, in order to get a more consistant naming scheme.
-
- Feb 04, 2008
-
-
Erwan Jahier authored
Sligtly generalise x_check, and x_check_interface to be able to define tabulated version of node_check and node_check_interface. More precisely, add 2 fonctions that extracts the name and the package name of a x_key. Ditto for lookup_x_eff. src/lazyCompiler.mli: s/do_node/node_check/
-
- Jan 31, 2008
-
-
Erwan Jahier authored
The previous change sligthly changed the result of the non-reg test
-
Erwan Jahier authored
The previous change sligthly changed the result of the non-reg test
-
Erwan Jahier authored
src/test/pfs.lus b/src/test/pfs.lus begin to tranform the code using V6 compliant types, but it is too much work ().
-
Erwan Jahier authored
Factorize the code performing type and constant references solving.
-
- Jan 30, 2008
-
-
Erwan Jahier authored
ident where not authorized to begin by "_"...
-
Erwan Jahier authored
src/lxm.ml: src/global: (new file) Add the lustre file name in error messages. src/compiledData.ml: Better Data structure dumping (string_of_type_eff,string_of_const_eff), and more dumping (LazyCompiler.check_const_interface). src/lazyCompiler.ml: Fix a bug that prevented enum constants to be exported. Indeed, in LazyCompiler.const_check_interface_do, only extern constants (Extern_const_eff) were accepted in the provided part, whereas enum contants (Enum_const_eff) should also be accepted. Force constants interface checking in LazyCompiler.test. src/test/Makefile: src/test/onlyroll.lus: src/test/heater_control.lus: src/test/pfs.lus: Some more test files.
-