Skip to content
Snippets Groups Projects
  1. Jun 01, 2011
    • Erwan Jahier's avatar
      Fix several bugs in static argument handling, in particular when · 65695130
      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).
      65695130
  2. May 19, 2011
  3. Nov 03, 2010
  4. Aug 19, 2010
    • Erwan Jahier's avatar
      When including files with a relative path, consider it as relative to · 248cdbe4
      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.
      248cdbe4
  5. May 05, 2010
  6. Apr 13, 2010
  7. Apr 09, 2010
  8. Apr 08, 2010
  9. Jan 22, 2010
    • Erwan Jahier's avatar
      Fix a bug in the fresh var names generation. · 0f54289a
      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...
      0f54289a
  10. Jan 20, 2010
  11. Mar 11, 2009
  12. Feb 10, 2009
  13. Feb 06, 2009
  14. Feb 05, 2009
  15. Feb 03, 2009
  16. Jan 30, 2009
  17. Jan 23, 2009
  18. Dec 12, 2008
    • Erwan Jahier's avatar
      Break the recursivity is the Eff.node_exp representation (which fix nested iter. pbs). · 5c722d86
      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.
      5c722d86
  19. Dec 08, 2008
  20. Nov 28, 2008
  21. Nov 26, 2008
  22. Nov 20, 2008
  23. Oct 23, 2008
  24. Sep 17, 2008
  25. Sep 15, 2008
  26. Aug 28, 2008
  27. Aug 25, 2008
    • Erwan Jahier's avatar
      Unnest array iterator calls by modifying the Lic printer. · 65c62005
      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;
      65c62005
  28. Aug 19, 2008
    • Erwan Jahier's avatar
      Split expressions into atomic expressions. In other words, introduce · d7905aff
      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.
      d7905aff
  29. Jul 22, 2008
  30. Jul 04, 2008
  31. Jun 26, 2008
    • Erwan Jahier's avatar
      A new implementation of EvalClock, that is more general. · 5dd64311
      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
      5dd64311
  32. Jun 03, 2008
    • Erwan Jahier's avatar
      Wrap the parser output with a new function, · e64e1031
      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
      e64e1031
  33. May 30, 2008
  34. May 28, 2008
  35. May 20, 2008
Loading