Updates from September, 2010 Toggle Comment Threads | Keyboard Shortcuts

  • Blanca Mancilla 07:04 on 2010/09/20 Permalink | Reply  


    How hard is it to have pretty-printing of the header components? All the operators, delimiters and libraries already loaded? Is is reasoble to ask the same for equations?

    • jarro2783 09:47 on 2010/09/20 Permalink | Reply

      It’s all pretty straight forward. It’s just a matter of determining correct interfaces. Is this for tlcore or for the C++ interface?

    • jarro2783 22:54 on 2010/09/22 Permalink | Reply

      I’ve done pretty printing of equations in the translator. I haven’t been able to test it though. Have a look at Translator::beginEquation and Translator::endEquation. They return an object which acts like an iterator but also has a print and id function allowing you to print the equation and retrieve the uuid.

  • cartesianprogramming 09:59 on 2010/09/14 Permalink | Reply  

    Semantics of header entries 

    Since headers are needed for equations to be parsed, and (at least in theory) equations can come from multiple simultaneous sources, there will be a need for multiple simultaneous headers, which should simply be unioned together, no? This means that one should be able to load the same library multiple times and declare the same dimension multiple times, and so on. What is necessary is that everything be consistent, e.g., an operator cannot be defined to have multiple interpretations.

    • jarro2783 10:07 on 2010/09/14 Permalink | Reply

      I think this goes with the post 2 down. The header semantics need to be better defined, including the deletion of dimensions, and the parser should be sensitive to time and other context. Currently the header just gets added to and the parser parses by whatever the header says at the time that it was called.

  • cartesianprogramming 04:42 on 2010/09/13 Permalink | Reply  

    Formalization of the interpreter 

    The interpreter needs to be formalized once the operational semantics is finished. This is a necessary step towards writing TransLucid in TransLucid. The key missing parts for writing TL in TL are:

    1. Besfitting
    2. Parsing (a form of bestfitting)
    3. Printing (a form of bestfitting)
    4, Libraries

    We are close on all of these. But nothing is finalized.

    • jarro2783 10:05 on 2010/09/14 Permalink | Reply

      1. We need a good algorithm to determine the bestfit equation. The best I can think of would be n^2 because it has to determine for every equation whether it is more specific than every other.
      2. Not sure about how to tackle this still. Some sort of recursive descent thing which mimics spirit could be feasible. I can see that in the future we could even beat spirit, possibly blowing it out of the water. We quite possibly need functions in TL to do this.
      3. String operations are probably required, apart from that it seems trivial.
      4. It seems that we just need some proper semantics. At the moment a library adds equations when it’s loaded. Libraries are currently written in c++, we could allow these to be translucid files too.

      • cartesianprogramming 10:12 on 2010/09/14 Permalink | Reply

        If you store information separately for each variable, then testing applicability is linear in the number of entries for that variable. Among the applicable entries, finding bestfit ones is quadratic in the number of applicable entries.

        This can be improved by using just-in-time ideas. After each modification of the set of equations for a variable, the first time that a demand is made for that variable would force the creation of a finite-state automaton that would be run upon any request for that variable (until, of course, the next modification to the set of equations).

        • cartesianprogramming 10:14 on 2010/09/14 Permalink

          The initial implementation can be done using the linear-quadratic solution. Just-in-time ideas can be kept for future optimization.

        • jarro2783 00:18 on 2010/09/16 Permalink

          what about including priority in that?

  • Blanca Mancilla 04:29 on 2010/09/13 Permalink | Reply  

    System dimensions 

    Dimensions necessary for the proper behaviour of the system should not be allowed to be manipulated. That includes deletion. Should we write the TransLucid interpreter in TransLucid, we will reconsider this decision. This will allow rewriting, optimization and specialization of the interpreter as in Smalltalk.

    • jarro2783 10:08 on 2010/09/14 Permalink | Reply

      That makes sense, it’s fairly trivial to do too. Although we should define semantics better, currently it is just in the c++ interface that dimensions can be deleted. It would be better if it was all consistent with time and so on and could actually be done with in TransLucid too.

      • superspreadsheet 07:02 on 2010/09/20 Permalink | Reply

        Just to confirm the email exchange, system dimensions will be put in a separate symbol table in the parser so that way they have a container which has a list of all their names, accessible to the programmer.

        • jarro2783 06:35 on 2010/09/21 Permalink

          Yes that is what I will do.

        • jarro2783 07:25 on 2010/09/23 Permalink

          I have completed this now, the interface is the same. System dimensions are in system_dimension_symbols, so addDimensionSymbol and removeDimensionSymbol only affects user dimensions.

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc