A pre-release of SPARK: the Scanning, Parsing, And Rewriting Kit is available for testing. At this time, I'm only distributing a new spark.py; I'm particularly interested in hearing from existing SPARK users -- there's been some major code changes, and I want to make sure I didn't break anything. SPARK features a collection of classes which can be used to implement little languages. It includes classes for scanning, parsing, AST construction, AST traversal, and tree pattern matching. The major change is that the parser runs up to twice as fast as it did in SPARK 0.6.1. The full changelog is below. Please note that the web site has moved, and my email address has changed. The new web site for SPARK is http://www.cpsc.ucalgary.ca/~aycock/spark John -- CHANGES FROM 0.7pre2 -> 0.7pre3: - GenericParser has an experimental mechanism for pickling a parser, forcing all precomputation to be performed. The result runs twice as fast as 0.6.1. CHANGES FROM 0.6.1 -> 0.7pre2: - GenericScanner's constructor now accepts an optional parameter to pass in additional flags to re.compile (in addition to re.VERBOSE). - GenericScanner's default pattern now raises an exception rather than silently swallowing input, at the request of several users. - GenericParser has had a complete rewrite, fixing a number of obscure bugs. It uses a "new" algorithm (in some sense) that runs about 30% faster than 0.6.1.