- Feb 25, 2009
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
Erwan Jahier authored
as extern constants. Also fix a bug in the struct/array expanser: when expanding structured constants into val_exp, I need to add a entry into the type and clock val_exp tables.
-
- Feb 11, 2009
-
-
Erwan Jahier authored
- expr such as "current x,y" should be written "current (x,y)" - abstract struct or array types were handled as extern types, which prevent the struct and array expanser to work them out. In order to fix that, I have added an Abstract_type_eff variant to Eff.type_ which contains the concerte type.
-
- Feb 09, 2009
-
-
Erwan Jahier authored
the moment, I just don't generate such operator anymore (i generate the polymorphic version Lustre::lt instead). I don't really know what is the better. fixing the v4 backend : print "+" instead of "Lustre::plus" (and ditto for the others).
-
- Feb 06, 2009
-
-
Erwan Jahier authored
(i.e., tuple of size one).
-
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 04, 2009
-
-
Erwan Jahier authored
When a node P::n1 wants to access to a node P::n2, it is ok to search for it in the boby of P.
-
- Feb 03, 2009
-
-
Erwan Jahier authored
nodes (e.g., map<<+,2>>). While fixing that, I put all the functions that deals with polymorphism into a new (Eponymous) dedicated module. The idea to be able to expand polymorphic node is basically the same, as the one for printing polymorphic nodes: we need to wait until the type is instanciated (in GetEff). That delay is implemented by using a stack of nodes.
-
- Jan 30, 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 05, 2008
-
-
Erwan Jahier authored
+ more work on the release dir.
-
- Nov 28, 2008
-
-
Erwan Jahier authored
-
- Nov 26, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
- Nov 25, 2008
-
-
Erwan Jahier authored
To do that, we centralized the ident name creation into a new dedicated module Name. + fix should_work/NONREG/param_node.lus, we contained a combinational loop.
-
Erwan Jahier authored
The rationale for this change is that this is necessary for constants appearing static arg to be replaced. One problem is that they are handled in exactly the same way as top-level constants, which could be left un-expanded. I could make something in order to not expand those top-levelconstants, but is it worth the trouble ? To do that, I have changed sligthly the representation of Eff.ARRAY (the elements are now attached to the constructor itself, and the operands is empty) and the one of array constant (we attach to Array_const_eff a list instead of an array, for the sake of homogeneity) with what is done in Eff.val_eff.
-
- Nov 20, 2008
-
-
Erwan Jahier authored
is part of the Eff.node_ney via static node parameters. The consequence was that some nodes (the ones with node as static parameters) were and printer several times (if used several times in the user program)!
-
- Oct 23, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
- Sep 15, 2008
-
-
Erwan Jahier authored
change the parser and accept only clock expressions after a when. A clock is now made of 2 idents: one for the clock constructor, and one for the clock variable.
-
- Sep 02, 2008
-
-
Erwan Jahier authored
-
- Sep 01, 2008
-
-
Erwan Jahier authored
-
- Aug 29, 2008
-
-
Erwan Jahier authored
around the rigth-hand-side.
-
Erwan Jahier authored
-
- Aug 28, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
polymorphic operators. For instance, when LicDumping expression such as map<<map<<+,4>>,5>> an alias node was created for "map<<+,4>>" (to unnest iterator calls). Fut this node is intrically overloaded (polymorphic). In this change, we look at the type this innr call is used to generate a specialised (mono-morphic) version of the node alias. Note that we currently still generate type variable when users write node mymap = map<<+,4>>;
-
- Aug 26, 2008
-
-
Erwan Jahier authored
+ enhance error msg (which helped finding the bug, but that migth also be useful for ed-users...).
-
- 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 21, 2008
-
-
Erwan Jahier authored
prefixed by "_".
-
Erwan Jahier authored
-
- Aug 19, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
was used in the local variables generated to split expressions into atomic expressions. Indeed, when such an intermediary expression is inferred to be variable, it is ok to consider that it is on the base clock. And I was missing such a case.
-
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 23, 2008
-
-
Erwan Jahier authored
to avoid name clashes in the lic.
-
- Jul 22, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
-
- Jul 08, 2008
-
-
Erwan Jahier authored
-