2009-12-07 Andreas Kupries * * Released and tagged Tcllib 1.12 ======================== * 2008-12-12 Andreas Kupries * * Released and tagged Tcllib 1.11.1 ======================== * 2008-10-16 Andreas Kupries * * Released and tagged Tcllib 1.11 ======================== * 2007-09-12 Andreas Kupries * * Released and tagged Tcllib 1.10 ======================== * 2007-08-31 Andreas Kupries * page_util_norm_peg.man: New files. Two, for the remaining utility * page_util_norm_lemon.man: packages. Lemon docs are partial. * page_util_peg.man: New files. Three more manpages, for most of * page_util_quote.man: the utility packages. * page_util_flow.man: 2007-08-30 Andreas Kupries * page_pluginmgr.man: First documentation for the packages, intro, * page_intro.man: and the plugin management. * pluginmgr.tcl: Fixed a typo in a comment. 2007-06-22 Andreas Kupries * pluginmgr.tcl: Replaced deprecated {expand} syntax in comments with {*}. 2007-03-28 Andreas Kupries * apps/page: Added a block of meta data. 2007-03-23 Andreas Kupries * pkgIndex.tcl: Added MD hints. 2007-03-21 Andreas Kupries * pkgIndex.tcl: Fixed version mismatches, index vs. package. * plugins/pkgIndex.tcl: * plugins/writer_mecpu.tcl: 2007-03-07 Andreas Kupries * compiler_peg_mecpu.tcl: Fixed typo in name of required package * pkgIndex.tcl: ('gasm;, was incorrectly 'gas'). Bumped to version 0.1.1. 2006-10-03 Andreas Kupries * * Released and tagged Tcllib 1.9 ======================== * 2006-09-19 Andreas Kupries * pkgIndex.tcl: Bumped version to 0.2 * pluginmgr.tcl: 2006-06-30 Andreas Kupries * compiler_peg_mecpu.tcl: New packages generating ME * gen_peg_mecpu.tcl: instructions for the CPU(core). * gen_peg_mecpu.template: And page plugins using them. * plugins/pkgIndex.tcl: * plugins/transform_mecpu.tcl: * plugins/writer_mecpu.tcl: * pkgIndex.tcl: * pluginmgr.tcl: Extended the page plugin environment with commands allowing a plugin to write files. Intended for the debugging of plugins, i.e. the dumping of internal state. The destination for such files however are restricted to the current working directory and its sub-directories. Currently only the MEcpu compiler package has code to use this, to write the intermediary graphs and some statistics (Disabled through comments however). 2006-01-11 Andreas Kupries * util_norm_peg.tcl: Inserted pragmas for the MDgen * util_norm_lemon.tcl: application hinting that the * gen_peg_me.tcl: pseudo-package 'page::plugin' * analysis_peg_emodes.tcl: is not a true dependency. * analysis_peg_minimize.tcl: * analysis_peg_realizable.tcl: * analysis_peg_reachable.tcl: * analysis_peg_minimize.tcl: Changed bad reference to 'useful' to the correct string, 'realizable'. 2005-10-06 Andreas Kupries * * Released and tagged Tcllib 1.8 ======================== * 2005-09-28 Andreas Kupries * NOTES.txt: Renamed from NOTES. This file had the same name as a directory, causing the Windows and OS X filesystem to trip badly as they considered both identical. 2005-09-27 Andreas Kupries * plugins/config_peg.tcl: Fixed version inconsistency. * gen_peg_canon.tcl: Fixed frink warnings. * analysis_peg_emodes.tcl (compute): Fixed inconsistency in return values. 2005-08-02 Andreas Kupries * ../../apps/page.man: Updated the documentation to list the two new plugins. * plugins/writer_identity.tcl: Additional reader and writer plugins. * plugins/reader_treeser.tcl: The writer dumps the incoming data as is, for inspection. The reader takes a tree serialization, validates it as such and then simply passes this one. * util_peg.tcl: Bugfixes in the computation of symbol(Node) for tree nodes. Wrong var name, and missing tree reference. Also change of output to stderr to use the regular page logging instead. * util_norm_peg.tcl: Extended the code flattening nested x and / operators to transform x and / operators without children into epsilon's. * gen_peg_ser.tcl: Fixed output going directly to stderr to go directly through the regular page logging. 2005-07-29 Andreas Kupries * ../../examples/page: Renamed the directory examples/pg to the proper name now in use. * modules/page/plugins/reader_lemon.tcl: Reworked feedback generation * modules/page/plugins/reader_peg.tcl: to properly signal end of * modules/page/plugins/reader_ser.tcl: reading, for good linebreaks * modules/page/plugins/reader_hb.tcl: in the output. Added to the * ../../apps/page: plugins, manager, and application. * pluginmgr.tcl: * modules/page/plugins/transform_reach.tcl: Added generic feature * modules/page/plugins/transform_use.tcl: query command to plugin * modules/page/plugins/reader_lemon.tcl: manager and plugins. * modules/page/plugins/writer_null.tcl: Added code to application, * modules/page/plugins/writer_tree.tcl: manager and plugins to ask * modules/page/plugins/writer_peg.tcl: for a feature 'timeable'. The * modules/page/plugins/writer_ser.tcl: application will defer the * modules/page/plugins/writer_tpc.tcl: collection of timing data to * modules/page/plugins/writer_hb.tcl: the plugin if it can do so. * modules/page/plugins/writer_me.tcl: Extended collection of timing * modules/page/plugins/reader_peg.tcl: data from reader to all uses * modules/page/plugins/reader_ser.tcl: of plugins. also a better * modules/page/plugins/reader_hb.tcl: report at the end. All plugins * ../../apps/page: are now timeable. Especially * pluginmgr.tcl: the readers now provide much better data about the number of characters they have read per second. 2005-07-26 Andreas Kupries * ../../apps/page.man: Completed the documentation of the 'page' application. * ../../apps/page: Rewrote option processing to handle the changes in the handling of configuration plugins and files. Also now handling the changes when the default options are used. Better error messages when plugins are not found. Corrected the handling of -a, -p and their long equivalents. * pluginmgr.tcl: Rewritten the configuration loader to accept files containing lists of options as well, possibly quoted using double-quotes and quotes. * plugins/config_peg.tcl: ** New file ** * pkgIndex.tcl: Put the predefined configuration "peg" aka "PEG parser generator" into a plugin. 2005-07-19 Andreas Kupries * A lot of changes. All packages have been renamed, i.e. shuffled to different places in the namespace hierarchy. All have been placed under "::page", and made more consistent. The files have been moved around too, so that their names reflect the namespace hierarchy as well. A customized pluginmgr has been written on top of the general one, and the application has been rewritten to use it. The existing parsers, code generators and transformers have been put into proper plugins. 2005-05-15 Andreas Kupries * examples/pg/parse.y: Used the new lemon frontend to convert the * examples/pg/sql.log: SQL grammar spec found in sqlite into an * examples/pg/sql.peg: incomplete PEG spec from which we can derive a complete spec (Removal of left recursion, and completion/correction of the lexical definitions). * examples/pg/lemon.html: Created a frontend for reading grammar * examples/pg/lemon.peg: specifications written for the LEMON * peg_grammar_lemon.tcl: parser generator by Richard Hipp. The * peg_norm_lemon.tcl: PEG grammar spec is based on the docu- * apps/pg: mentation and the SQL spec found in sqlite3. Integrated the frontend into the PG application. * peg_tpcserwriter.tcl: Added code to deal with grammars without * peg_tpcphbwriter.tcl: start expression (as can be generated by * peg_pegwriter.tcl: the usefulness transform). * peg_mewriter.tcl: * peg_writer.tcl: * peg_emodes.tcl: * peg_useful.tcl: 2005-05-11 Andreas Kupries * peg_emodes.tcl: Fixed problem in gen() phase. A gen() switching to no can force acc() to no as well. * apps/pg: Reworked PEG frontend code a bit to allow quick switching between four variants of the PEG fronted (ME parser vs. interpreted grammar, timed vs. untimed). * pkgIndex.tcl: * peg_grammar_me.tcl: New implementation of PEG frontend. PEG parser as generated by the ME backend, after the fixes done yesterday (PG dogfooding / bootstrapping). 2005-05-11 Andreas Kupries * peg_mewriter.tcl: Fixed a number of bugs (special char classes generated bogus code, nonterminals and ! have to import status variable when sub expression is terminal). Added (inactive) code for insertion of logging code into the generated parser. 2005-05-10 Andreas Kupries * apps/pg: Removed two superfluous commands. Added readable descriptions for the backends. Added 'null' backend which does nothing. Added non-verbose char reader, disabled right now. * peg_mewriter.tcl: Completely rewritten, removed all templates save the main one, all code composition via lists, completed option, kleene and pos kleene code generator, added comments containing the parsing expressions matched by a particular command. * peg_quote.tcl: More forms of quoting characters. 2005-05-07 Andreas Kupries * doc_emodes.txt: Recorded some thought about the transformation which make it not worth to implement right now, as we need an LL(1) grammar, otherwise we ran into either cache incoherency or exponential time. * peg_emodes.tcl: New transformation. Mode analysis. Computes accept/generate data for all nodes from the given mode hints, finds places where the mode can be made more strict than specified. * pg_flow.tcl: Fixed bug in setup of flow when using a start set of nodes. * doc_useful.txt: Rewritten to use the new flow management. Stores * peg_useful.tcl: the results differently as well, easier to use by the remove code. Updated the documentation of the transform as well. 2005-05-06 Andreas Kupries * doc_reachable.tcl: * peg_reachable.tcl: Rewritten to use the new flow management. Stores the results differently as well, easier to use by the remove code. Updated the documentation of the transform as well. * pg_flow.tcl: New utility. Generic tree walking, for both topdown and bottomup walks, and anything in between. Maintains the state of nodes to visit, and the code executed per node determines what other nodes to visit. 2005-05-05 Andreas Kupries * peg_utilities.tcl: Bugfix, have to update user information of symbols when nodes are removed, their definitions may have lost callers. * peg_tpcser.tcl: A first, two frontends, reading grammars which * peg_tpcphb.tcl: are either in halfbaked form, or a serialization. * peg_tpcphbwriter.tcl: Two new backends, writing the grammar out * peg_tpcserwriter.tcl: as a halfbaked package (See peg_writer, reduced to the Start and Define commands), and as serialization of a PEG container. * peg_writer.tcl: Moved a number of generally useful * peg_utilities.tcl: functionality into the utilities. 2005-05-03 Andreas Kupries * peg_useful.tcl: Tweaked the definition of usefulness, better based on the definition for CFG's. 2005-05-02 Andreas Kupries * peg_pegwriter.tcl, peg_mewriter.tcl: Updated to changed NPEGT definition (changed attribute names, node classification). * peg_useful.tcl: Bugfix, we delete the subtrees of all unuseful nodes. No cutting, deleting. * treewriter.tcl: Back unquoted characters. Better readable. 2005-04-29 Andreas Kupries * peg_useful.tcl: Ditto for the usefulness analysis and * doc_useful.txt: transform. Rewrote algorithm to use more proc local state with quicker access, and easier checks. * peg_reachable.tcl: Documented reachable computation and * doc_reachable.txt: transform, updated to the changes in the Normalized PE Grammar Tree. * peg_utilities.tcl: New helper package. Common operations on the tree. 2005-04-28 Andreas Kupries * Reworked documentation of 'Raw PE Grammar AS Tree', as generated by frontend, updated mengine to that. * Reworked documentation of normalization step, and updated the transformation code to it. Note: The non-generic backends are broken by this. * updated generic treewriter to quote attribute strings, as they now may contain unprintable characters (the attributes carrying lexemes). 2005-04-27 Andreas Kupries * Added backend writing the input back in the same format, i.e. as PEG. Bug fixes. Added option processing to the application to switch between backends, and to select optimization levels. * Character de/encode put into separate package. Started backend writing a recursive descent parser for a grammar, based on mengine. 2005-04-26 Andreas Kupries * Bug fixes. Added transformations to com;ute reachable and useful parts of the grammar, for minimizing it. 2005-04-23 Andreas Kupries * Restructured utility packages (renames), and updated the backends. 2005-04-18 Andreas Kupries * Completed backend for writing the grammar as package providing a PEG container. Bug fixes. First internal docs. 2005-04-16 Andreas Kupries * Bugfixes, added a transformation normalizing the raw AST. 2005-04-15 Andreas Kupries * New module: Utility packages for the parser generator application.