--------------------------
- ======= NOTE: API CHANGE!!!!!!! ===============
With this release, and henceforward, the pyparsing module is
imported as "pyparsing" on both Python 2.x and Python 3.x versions.
- Fixed up setup.py to auto-detect Python version and install the
correct version of pyparsing - suggested by Alex Martelli,
thanks, Alex! (and my apologies to all those who struggled with
those spurious installation errors caused by my earlier
fumblings!)
- Fixed bug on Python3 when using parseFile, getting bytes instead of
a str from the input file.
- Fixed subtle bug in originalTextFor, if followed by
significant whitespace (like a newline) - discovered by
Francis Vidal, thanks!
- Fixed very sneaky bug in Each, in which Optional elements were
not completely recognized as optional - found by Tal Weiss, thanks
for your patience.
- Fixed off-by-1 bug in line() method when the first line of the
input text was an empty line. Thanks to John Krukoff for submitting
a patch!
- Fixed bug in transformString if grammar contains Group expressions,
thanks to patch submitted by barnabas79, nice work!
- Fixed bug in originalTextFor in which trailing comments or otherwised
ignored text got slurped in with the matched expression. Thanks to
michael_ramirez44 on the pyparsing wiki for reporting this just in
time to get into this release!
- Added better support for summing ParseResults, see the new example,
parseResultsSumExample.py.
- Added support for composing a Regex using a compiled RE object;
thanks to my new colleague, Mike Thornton!
- In version 1.5.2, I changed the way exceptions are raised in order
to simplify the stacktraces reported during parsing. An anonymous
user posted a bug report on SF that this behavior makes it difficult
to debug some complex parsers, or parsers nested within parsers. In
this release I've added a class attribute ParserElement.verbose_stacktrace,
with a default value of False. If you set this to True, pyparsing will
report stacktraces using the pre-1.5.2 behavior.
- New examples:
. pymicko.py, a MicroC compiler submitted by Zarko Zivanov.
(Note: this example is separately licensed under the GPLv3,
and requires Python 2.6 or higher.) Thank you, Zarko!
. oc.py, a subset C parser, using the BNF from the 1996 Obfuscated C
Contest.
. stateMachine2.py, a modified version of stateMachine.py submitted
by Matt Anderson, that is compatible with Python versions 2.7 and
above - thanks so much, Matt!
. select_parser.py, a parser for reading SQLite SELECT statements,
as specified at https://www.sqlite.org/lang_select.html this goes
into much more detail than the simple SQL parser included in pyparsing's
source code
. excelExpr.py, a *simplistic* first-cut at a parser for Excel
expressions, which I originally posted on comp.lang.python in January,
2010; beware, this parser omits many common Excel cases (addition of
numbers represented as strings, references to named ranges)
. cpp_enum_parser.py, a nice little parser posted my Mark Tolonen on
comp.lang.python in August, 2009 (redistributed here with Mark's
permission). Thanks a bunch, Mark!
. partial_gene_match.py, a sample I posted to Stackoverflow.com,
implementing a special variation on Literal that does "close" matching,
up to a given number of allowed mismatches. The application was to
find matching gene sequences, with allowance for one or two mismatches.
. tagCapture.py, a sample showing how to use a Forward placeholder to
enforce matching of text parsed in a previous expression.
. matchPreviousDemo.py, simple demo showing how the matchPreviousLiteral
helper method is used to match a previously parsed token.