Gazelle 0.2, released June 29, 2008 =========================================== Overview: This is a major overhaul of Gazelle's guts. It also has significant usability improvements in its documentation and command-line tools. It is the first release of Gazelle I would actually recommend that people try out. Core Parsing Algorithm: * The compiler now calculates true Strong-LL(k) lookahead. As a result, it supports far more grammars than Gazelle 0.1 did. * The runtime component now represents all of its state explicitly in its stack. As a result, parsing can be interrupted and resumed on arbitrary byte boundaries. * The "ignore" feature was completely removed, because experience and deeper thought revealed that it was not the right abstraction. As a result, this version of Gazelle has no way to deal with arbitrary whitespace. A replacement feature will come in the future to fill this gap. Usability: * There is a manual (though very much in-progress). * The compiler is easier to invoke and has useful --help. * The compiler is capable of dumping a visual representation of the grammar to HTML if graphviz is installed. * gzlparse can dump the parse tree into JSON format. Caveats (all of these will be fixed sooner or later): * The language and all APIs are still very much subject to change. * The current release cannot handle whitespace/comments/etc. in languages. * Parse errors will exit the program, instead of being reported to the API. * There are lots of edge cases the compiler doesn't properly deal with yet. Some will make the compiler go into an infinite loop, others will cause it to generate incorrect output. Gazelle 0.1, released December 16, 2007 ======================================= Overview: This is a preliminary release of Gazelle, and is not very usable. It can parse only a very small class of languages, and all tools/APIs are very rough around the edges. Core Parsing Algorithm: * The supported lookahead is weak: only Simple-LL(1) parsing. * The runtime is reasonably fast and has a very low memory footprint. * The compiler and runtime support loading and storing the compiled version of the grammar to bytecode.