Skip to content
Snippets Groups Projects
  1. May 16, 2008
  2. May 15, 2008
    • Erwan Jahier's avatar
      Fix a bug where, when defining a package exporting an abstract type · 16344043
      Erwan Jahier authored
      t, and a node returning such a t, the compiler was actually returning
      the type definition of t (instead of the abstract type).
      
      In  order  to fix  that,  it  was necessary  to  add  in argument  of
      Lazycompiler.solve_x_idref  a  flag  (named provide_flag)  indicating
      whether the  item being  compiled appears in  the provide, or  in the
      body part of the package.
      
      This fix  triggered another bug that  we also fix: indeed,  it is not
      correct to return  a compile error when the  provided parameters of a
      node is not equal to  its implementation. Indeed, such parameters can
      be abstract type that are defined in that package.
      
      The test "should_work/packEnvTest/packages.lus" is now ok.
      6.9.1
      16344043
  3. May 07, 2008
    • Erwan Jahier's avatar
      In symbolTab.ml, change · 956514c2
      Erwan Jahier authored
      	type 'a hereflagged =
      	  Here of 'a
      	| NotHere of Ident.long
      into
      	type 'a elt =
      	  Local of 'a
      	| Imported of Ident.long * static_arg list
      
      i.e., i am basically doing two things:
       - fix poor naming
       - adding static arg to nodes
      
      indeed, when compiling an equation that involves nodes defined
      in another package, I need to check that the static args and the
      static params match. Therefore I need to have the static params !
      Therefore I add them (I will use them in the next commit).
      
      Moreover, in SyntaxTreeCore.node_info, the static_params list was
      an option type, which is a bit weird (empty lists are enough to
      represent node with no static params).
      6.9.0
      956514c2
  4. May 02, 2008
  5. Apr 02, 2008
  6. Mar 28, 2008
  7. Mar 20, 2008
    • Erwan Jahier's avatar
      Add two new modules, Predef and PredefSemantics, that deals with predefined · 4c0a0b1f
      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
      4c0a0b1f
  8. Mar 17, 2008
    • Erwan Jahier's avatar
      Merge EvalType, EvalNode and EvalEq into a single module GetEff. · 64fca779
      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 !!!
      64fca779
  9. Mar 14, 2008
  10. Mar 11, 2008
    • Erwan Jahier's avatar
      Simplify significantly the node representation. The rational for this · 7f628ceb
      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.
      6.3.0
      7f628ceb
  11. Mar 06, 2008
  12. Feb 21, 2008
    • Erwan Jahier's avatar
      Fix the examples so that slice "1..2" are written "1 ..2" to turn · 4e616e89
      Erwan Jahier authored
      around a lexing bug that I don't know how to fix yet.
      4e616e89
    • Erwan Jahier's avatar
      Write a more generic src/test/Makefile · 648fa2ee
      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/
      648fa2ee
  13. Feb 20, 2008
  14. Feb 15, 2008
    • Erwan Jahier's avatar
      Resolve the inconsistant use of node and oper identifiers in the code. · de2a5f14
      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.
      de2a5f14
  15. Feb 14, 2008
  16. Feb 12, 2008
    • Erwan Jahier's avatar
      LazyCompiler.test: · d12f3b57
      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.
      d12f3b57
    • Erwan Jahier's avatar
      Add tests for LazyCompiler.check_node. · 84b93e34
      Erwan Jahier authored
      Better error msgs.
      
      Renaming idents.
      6.1.3
      84b93e34
  17. Feb 06, 2008
    • Erwan Jahier's avatar
      src/syntaxTree.ml · 1a14b111
      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.
      1a14b111
  18. Jan 31, 2008
  19. Jan 30, 2008
    • Erwan Jahier's avatar
      src/lexer.mll: · ee762ccd
      Erwan Jahier authored
      	ident where not authorized to begin by "_"...
      6.1.2
      ee762ccd
    • Erwan Jahier's avatar
      src/main.ml: · 36f22c50
      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.
      6.1.1
      36f22c50
    • Erwan Jahier's avatar
      Lazycompiler.do_type: · b6ee23f1
      Erwan Jahier authored
      	Try to split this 400 lines (!) function.
      	+ Factorize some duplicated code.
      b6ee23f1
  20. Jan 28, 2008
  21. Dec 21, 2007
  22. Dec 14, 2007
  23. Dec 05, 2007
Loading