- Jan 20, 2010
-
-
Erwan Jahier authored
-
- May 26, 2009
-
-
Erwan Jahier authored
maintaining (ugly and error-prone) hash tables. That change revealed an untriggered bug in EvalClock.check_args: it was wrong to add in subst the substitutions made of the parameters and the arguments (it is enough to unify the clocks of the pars and of the args). For instance, consider the node (in should_work/clock/clock.lus) node clock5(x : bool; y: bool when x; z: bool when y) and the call z2 = clock5(a, b when a, c when e); I was adding y/b in the subst, which was wrong. Other minor changes: - move const_to_val_eff from Eff to UnifyClock. - GetEff.translate_val_exp now returns a substitution, in order to be able to unify clock vars and propagate the resulting substitution.
-
- Mar 11, 2009
-
-
Erwan Jahier authored
info is attached to all val_exp. Moreover, this allow to perfrom all the type checking in EvalType.f, instead of doin part of it in GetEff.translate_val_exp.
-
Erwan Jahier authored
maintaining (ugly and error-prone) hash tables.
-
- Mar 09, 2009
-
-
Erwan Jahier authored
constants that are not on the base clock, add the suitable "when" statement if it was not present in the source code (the lic (and the ec/lv4) backend does not perform such kind of clock inference for constants.
-
- Mar 04, 2009
-
-
Erwan Jahier authored
instead of silently generate (syntactically) wrong lustre v4 (or ec).
-
Erwan Jahier authored
(versus raising an internal error...).
-
- 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).
-
- 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 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
(--inline-iterators) to activate it. nb : do not inline completely nested iterator calls (yet, cf TODO).
-
- Oct 27, 2008
-
-
Erwan Jahier authored
-
- Oct 22, 2008
-
-
Erwan Jahier authored
-
- Sep 17, 2008
-
-
Erwan Jahier authored
-
- Sep 15, 2008
-
-
Erwan Jahier authored
-
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
simple, and also avoids 3 shift/reduce conflicts. It also make the pragma stuff more homogeneous and simple to explain in the manual. Moreover, pramgma are no more attached to AST nodes, but to lexemes.
-
- Aug 29, 2008
-
-
Erwan Jahier authored
Note that by polymorphic here I mean *really* polymorphic, since they can handle tuples, which is no the case of, let's say, "<".
-
Erwan Jahier authored
splitting expressions.
-
Erwan Jahier authored
-
- Aug 28, 2008
-
-
Erwan Jahier authored
-
- Aug 19, 2008
-
-
Erwan Jahier authored
-
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 17, 2008
-
-
Erwan Jahier authored
test/should_work/Pascal/t1.lus + typos
-
- Jul 07, 2008
-
-
Erwan Jahier authored
-
- Jul 04, 2008
-
-
Erwan Jahier authored
-
- Jul 01, 2008
-
-
Erwan Jahier authored
-
- Jun 30, 2008
-
-
Erwan Jahier authored
Add some tests with various kinds of expr that we can have after a when.
-
Erwan Jahier authored
-
- 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 18, 2008
-
-
Erwan Jahier authored
are defined exactly once. This algo is naive and does not work with slices of slices with negative steps. I commit it before trying a new one to get better non-reg test. Fix some non-reg test in the should_work dir that this new check revealed.
-
- Jun 13, 2008
-
-
Erwan Jahier authored
-
- Jun 12, 2008
-
-
Erwan Jahier authored
It does not work, I have changed my mind to use a more general clocking algorithm based on unification. I commit that current state just in case I change my mind again...
-
- Jun 09, 2008
-
-
Erwan Jahier authored
-
Erwan Jahier authored
the parameters input types are compatible with Unify.f. Apply (if necessary) the resulting substitution to the output parameters. Also, when checking array concat, try to unify the types of both arrays instead of just checking their equality. This of course triggers some errors in the non-reg tests. One of this error is due to a bug in the parser, where the list of parameter was inversed twice. I've also fixed that in this change.
-