Brandon Stewart
June/July 2015
Current Lisa Version: 0.2.0


****************************************************************************************
* Known Issues *************************************************************************
****************************************************************************************

This is a list of what should be fixed in future Lisa versions.

- Everything should work fine when using only one or fewer "using ..." statement.
Nearly everything works when more than one "using ..." statement, but there are a
few things left to fix.

  The most notable is something like:

    -----------------------------------------------------------------------------

    --LISA source code--
    using minigrail;
    using grail;

    minigrail::dfa mG_dfa1;
    minigrail::dfa mG_dfa2;
    ...

    mG_dfa1 = complete(mG_dfa2);

    --What it is when compiled--

    using namespace minigrail;
    using namespace grail;

    minigrail::mGDFA mG_dfa1;
    minigrail::mGDFA mG_dfa2;
    ...

    mG_dfa1=*(grail::DFA::complete(mG_dfa2));


    -----------------------------------------------------------------------------------

    Because grail is the latest "using ..." used, and it has a DFA complete function, its
    namespace name is used.  Also, both complete functions in grail/minigrail take a nodetype_dfa
    parameter, so the current implementation of parameters cannot solve this. If I have time,
    I'll fix this, otherwise I'll document the problem along with my proposed solution.

    (For the time being, this is avoided by using minigrail::complete(...);).


    * One way to fix this would be to change parameters to have a namespace ID, in addition
    to the nodetype they already have.



****************************************************************************************
* Future features **********************************************************************
****************************************************************************************


This is a list of what future versions of Lisa should strive for:


- Finish work on bin/lib/lisa/minigrail-adapter:

      This will involve writing new algorithms in minigrail.  Look at Grail's
    implementation to see how it should look.  Once this adapter is complete,
    minigrail should work fine in Lisa.



- A new way to add/remove states in a finite automaton.  A format similar to:

DFA + (3a5);   //add transition state
DFA + final 5; //add final state
NFA - (2b3);   //remove transition state

was recommended.  This will make modifying FA much simpler.



- It would be useful to be able to easily convert between FA of the same type in different
backends.  It should therefore be possible to concatenate two dfa's from different
namespaces, for example.

      Currently, the only way this can be done is by writing one dfa to a file,
    and have a dfa of a different namespace read from that file.



- Reduce the amount of raw pointers used in bin/lib/lisa.  There seems to be very little point
in returning fm<char>*/mGDFA* from these functions.



- (optimization if Lisa gets to be very large/have many different backends)
json, xml and other similar formats are useful for human readability, but can be "slow" to
load and parse.  Converting json/xml to binary could reduce the time it takes to compile/run
Lisa.  This will be a non-issue for a long time, but it could be something to consider for a
much later release.
