Easy Extend


                                                                

                                  Change History


Date
Version
Change
2009-09-20
3.0.2
  • Bugfix that lets Teuton fail on Linux.
  • Add STOP symbol to lexertoken.
  • eeimporter: langlets failed to import python modules from eggs. This has been fixed. However there is no mechanism to import langlet modules from eggs right now which remains to be done.
  • Bugfix in gallery langlet. Uncomment new rules for small_stmt and tiny_stmt in Grammar.ext
2008-08-13 3.0.1
  • Line and column numbers were displayed incorrectly when lexing/parsing failed.
  • customize eecommon.run. If L is a langlet then run_L.py is the langlet driver. If autorun() is available in run_L.py it will be called in eecommon.run(). This feature is used by the p4d langlet in combination with the --xml2p4d command line option ( see run_p4d.py for examples ).
  • cst.py: fix of lambdef
  • eeoptions.py: rename option --show_scan to --show-scan
  • eeimporter.py: import_from_langlet function
  • set __builtin__["__like_main__"] = Module.__like_main__ where Module is the main module of the langlet.
  • csttools.py
    • add function supersimple
    • fix rule_error
    • Fix wrap_arg s.t. True/False will not be mapped to STRING but NAME
    • add pushstmt()
  • cstgen.py: fix CST_Lambda
  • nfadatagen.py: set value NFA_EXPANSION_OVERFLOW = 1500
  • several optimizations and refactorings in nfaparser.py and nfalexer.py
  • nfatracing.py: replace Cursor class by SimpleNFACursor
  • Bugfix in Teuton: WindowsError was in the translation table for builtins but is not available in non-Windows systems ( patch by Gerhard Häring )
  • Bugfix in setup.py. missed to import Extension ( patch by Gerhard Häring ).
2008-06-25
3.0-fin
  • Bugfix in eeconsole.py. Incorrect handling of linebreaks in multiline token. Replace except clause for tokenstream production.
  • nfatools. Reimplement NFADataGenerator_TrailParser.expand() and NFADataGenerator_TrailParser.check_expanded()
  • Raise RuntimeError exception when more than 10 warnings are issued during expansion.
  • Raise OverflowError exception when size(NFA)>NFA_EXPANSION_OVERFLOW. The NFA_EXPANSION_OVERFLOW constant has a default value 1024.
  • Bugfix in nfagen.py. Intermediate (None, '+') state has not been replaced cleanly on any occasion.
  • Fix and reimplementation of NFAMultiTrace.mk_tree.
  • Change of split_file_input. Always return the input node as a default value. Change applies to langlets that are yet untransformed Python extensions.
  • Change of load_nfas. When Token or Token.ext has been changed not only lexdef files but also parsedef files have to be rebuilt because they depend on concrete lexdef nids.
  • Split old nfatools.py into two modules: nfatracing.py and nfadatagen.py. Implement many of the NFADatagen methods as pure functions and let the survive in nfatools.py
  • nfadatagen.py: implement all_selections(). This fixes a bug that caused concurrent nids being present in one selection.
  • Implement CST_Lambda in cstgen.py
  • Add --build-nfa option that lets the user create nfas for token and grammar without changes in Token.ext or Grammar.ext.
  • modify tokenize() function in eecommon.py. Now the langlet specific LangletTokenizer is always preferered if available.
  • Limit failed parsing attempts in eeconsole.py to 3 tries.
  • Improved error message on a failed lexical analysis: raise a LexerError instead of a ParserError.
  • Add a simple default post_lex implementation to AbstractTokenizer.
  • Add an optional nid argument to unmark_node. If available only nodes with this particular nid will be unmarked and become invisible for transformations.
  • Plenty of changes in nfaparser.py and nfalexer.py.
  • Add cyTrail.pyd. This is the first time when EasyExtend uses a C-extension module. However it is optional and mainly used to speedup some operations in Trail.
  • Add P4D langlet.
2008-03-16
3.0 - b2
  • Remove conf.py_template from generated langlet
  • Add t_dbg which is transform_dbg but without binding the cst_transformer flag. Reason: more often than not one wants to uncomment the debugging info generation and uncomments the whole transform_dbg decorator. Now one can use two decorators: @transform and @t_dbg and uncomment only the latter. @transform_dbg represents the synthesis of both and will be maintained though.
  • Teuton langlet added for 3.0
  • Coverage langlet added for 3.0
  • Coverage langlet: coverage of expressions in and_test, or_test.
  • Change in eecommon.run_module(). Langlet can define own run_module function that is called after langlet_init.
  • Changes in eetransformer.FSTransformer._transform_more. Modifications made on a node were not taken over when node wasn't returned explicitely.
  • Introduction of NodeCycleError exception. Overflow exceptions were caused by cycles in CSTs: a node N included a subnode A that included N again as a subnode. These cycles are detected and a NodeCycleError exception is raised. A hint on the use of clone_node is given to prevent such cycles.
  • Modify __langlet__ import in langlet specific modules s.t. __langlet__ = init_langlet( __langlet__ ). The init_langlet function inspects now the FSConfig cache for a stored langlet of the same offset and returns it if available. This way uniqueness of the used langlet module object is ensured.
  • Change markers in coverage langlet and add a marker for the new expr coverage.
  • Add 'sn' command to t_dbg.
  • Fix transform_dbg s.t. node tranformers can an additional locals dict.
  • Change cst2source.Unparser.__call__ s.t. not leading whitespace but only leading newlines will be stripped.
  • Support arbitrary dicts passed into node transformers.
  • Add cond filter predicate for t_dbg
  • Fix __future__ detection bug in eetransformer: when module docstring is preceeding __future__ import, generated langlet imports will also precede __future__.
  • Introduction of global_conf.py which just collects definitions which are common for all conf.py modules and won't depend on the local structure of a langlet.
  • Bugfix in Lexer. Newlines in strings were not counted.
  • Fixed Token grammar for String recognition. When a triple quoted string contained another string using the same quotes the string was rejected. I introduced following rule that made the thing work:                          '"' '"' '"' (ANY | '"' | '"' ANY* '"' )* '"' '"' '"'
  • Another bugfix in Lexer. Line comments that were adjecent to code ( e.g. 123# number ) did not produce a NEWLINE token.
  • The -t option was not recognized when running from the command but not the console.
  • Improvement of file recognition when running from the command line.
  • Optimization in nfatools.NFACursor.move(). Replace statelist by stateset. Prevents exponential growth of the number of states in some cases. Instead the number of states is bounded by the states in an NFA.
  • Change of Single / Double in Token. Strings of the kind 'foo\'bar' were rejected. Enable \ ANY combinations.
2008-03-04
3.0 - b1
Initial 3.0 release. 3.0 is the new 1.0. The list of changes were longer than the tutorial. So keep this trace as the relevant change history beyond the initial state.