- Jun 01, 2011
-
-
Erwan Jahier authored
parametric nodes (or predef iterators) are nested. Before, nested iterators were handles as follows : a source-level (i.e., not compiled) alias node was created on-the-fly, and then compiled. But this way to proceed was buggy for static args coming from nested iterators or nested parametric nodes. Now, I rely on Inline.iterators to get rid of iterators (the iterator inlining is now recursive).
-
- May 19, 2011
-
-
Erwan Jahier authored
not use the module name. Otherwise, names with "::" are created, and sometimes the lhs of the "::" does not even correpond to an existing module.
-
- Nov 03, 2010
-
-
Erwan Jahier authored
-
- Aug 19, 2010
-
-
Erwan Jahier authored
the includer file, instead of the compiling directory. Also, avoid loops when including files. Add a --nonreg-test option that prevent the compiler to print file name paths in error messages. Indeed, this change makes all file names absolute, which complicates the non-regression tests automatic perusal.
-
- May 05, 2010
-
-
Erwan Jahier authored
Add a -tlex option to debug the lexer. Also, rename the rules in parser.mly now that their appear in the manual. This renaming work is in progress though.
-
- Apr 13, 2010
-
-
Erwan Jahier authored
-
- Apr 09, 2010
-
-
Erwan Jahier authored
This is useful to be able to compile V4 program that uses include.
-
- Apr 08, 2010
-
-
Erwan Jahier authored
Fix a performance bug that was occuring with programs having a lot of variables and that were using constant.
-
Erwan Jahier authored
-
- Jan 22, 2010
-
-
Erwan Jahier authored
cf test/should_work/NONREG/fresh_name.lus where the local variable _n1e1_1 was defined twice ! The fix contist the following idea : prefix fresh var name by "_", except if at least one user ident begins by "_". In that case, we try to prefix them by "_1", and then "_2", and so on. We take the first possible one. nb : this won't work if the user defined idents from "_1" to "_1073741823" (on 32-bits machine), but I bet that this compiler would die before anyway...
-
- Jan 20, 2010
-
-
Erwan Jahier authored
-
- Mar 11, 2009
-
-
Erwan Jahier authored
expanser to expand the mentioned node.
-
- Feb 10, 2009
-
-
Erwan Jahier authored
2 source transformations), we add an entry in the EvalType and the EvalClock tables. Otherwise, when we use EvalType.lookup or EvalClock.lookup, an error migth be raised.
-
- Feb 06, 2009
-
-
Erwan Jahier authored
with a non-empty body (instead of just the first node).
-
- Feb 05, 2009
-
-
Erwan Jahier authored
-
Erwan Jahier authored
some_clk" should be written "(x:some_type) when some_clk"
-
- Feb 03, 2009
-
-
Erwan Jahier authored
-
- Jan 30, 2009
-
-
Erwan Jahier authored
-
- Jan 23, 2009
-
-
Erwan Jahier authored
-
- Dec 12, 2008
-
-
Erwan Jahier authored
In short, the rationale for this change, is that it is having a recursive node_exp is - useless, - too complicated, - wrong w.r.t. nesting iterator calls In long: - It is useless because, at the Eff level, a node cannot call itself via one of its static arg (which was where the recursivity came from). - and indeed, it is much simpler to consider that a static arg node can only be ident.long that identifies a node alias. This means of course, that nested iterators have been unnested before, inventing alias node names along the way... And polymorphism makes thing difficult once again. - But the *big* problem with a recursive node_exp is that it make things very complicated to (lic)dump nested iterator call because of polymorphism! Actually, it even makes thing complicated when the iterators were themselves not nested in the source code ! Some ugly things were done in LicDump to unnest those calls when printing node_exp. But this uglyness have a price: tricky code, and bugs! Indeed, nested iterators calls were wong for example when using the --inline-iterator mode (but i would not be surprised that is wrong in other cases...). Hence, LicDump is simpler, but of course LazyCompiler is more complicated. But this is reasonable: a pretty-printer is not supposed to be complicated.
-
- Dec 08, 2008
-
-
Erwan Jahier authored
-
- Nov 28, 2008
-
-
Erwan Jahier authored
-
- Nov 26, 2008
-
-
Erwan Jahier authored
-
- Nov 20, 2008
-
-
Erwan Jahier authored
(--inline-iterators) to activate it. nb : do not inline completely nested iterator calls (yet, cf TODO).
-
- Oct 23, 2008
-
-
Erwan Jahier authored
by position). Rename ExpandPack into InstanciateModel.
-
- Sep 17, 2008
-
-
Erwan Jahier authored
-
- Sep 15, 2008
-
-
Erwan Jahier authored
-
- Aug 28, 2008
-
-
Erwan Jahier authored
-
- Aug 25, 2008
-
-
Erwan Jahier authored
The idea is the following: each time a nested iterator call (map<<map<<n,3>>,4>>) is encountered, we create a fresh alias name (create_alias_name) ad we add it in the node_alias_tbl. At the end of the compilation, LicDump.dump_node_alias is called, which prints the definition of those node aliases. For example, the expression "map<<map<<n,3>>,4>>" is printed like this: map<<_node_alias1, 4>> and later, the node alias is defined: node _node_alias1(x:int) returns(y:int); let y = map<<n,3>>(x); tel;
-
- Aug 19, 2008
-
-
Erwan Jahier authored
as many new local variables as necessary so that an expression is made at most of one operator. The rational for that is to obtain a lic code that is trivial to clock check (nested node calls, for example, make it less simple). The old behavior can still be obtained using --keep-nested-calls. During that change, I realised that I did not clock check asserts. Hence, I have also added this check.
-
- Jul 22, 2008
-
-
Erwan Jahier authored
-
- Jul 04, 2008
-
-
Erwan Jahier authored
profiles constain only named types. Typically, instead of printing: node toto(x: int ^ 4) ... print something like : type int4 = int ^ 4 node toto(x: int4) ... Moreover, in order to avoid name clashes, we prefix all user name type by "_".
-
- 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 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
-
- May 30, 2008
-
-
Erwan Jahier authored
(well, for the first file, the numbers were ok :-). Also, begin to sort out a little bit the mess in the Global module. Moreover, augment the necessary print level of most internal structure dumping function.
-
Erwan Jahier authored
no node is provided at the command-line. Instead, compile all items even if the --compile-all-items option is not provided.
-
Erwan Jahier authored
Also, in verbose mode, print the full path of the openned files.
-
- May 28, 2008
-
-
Erwan Jahier authored
-
- May 20, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-