ANN: pyparsing-1.4.10 released!

Paul McGuire ptmcg at
Mon Dec 10 23:18:18 CET 2007

I'm happy to announce that I have just uploaded the latest release
(v1.4.10) of pyparsing.  I had to quick turnaround this release
a bug I thought I had fixed in 1.4.9 still persisted.  I now have unit
tests to catch the problematic variations in the operatorPrecedence

This release has a few new features and a few minor bug-fixes.

Here are the notes for both 1.4.9 and 1.4.10:

Version 1.4.10 - December 9, 2007
- Fixed bug introduced in v1.4.8, parse actions were called for
  intermediate operator levels, not just the deepest matching
  operation level.  Again, big thanks to Torsten Marek for
  helping isolate this problem!

Version 1.4.9 - December 8, 2007
- Added '*' multiplication operator support when creating
  grammars, accepting either an integer, or a two-integer
  tuple multiplier, as in:

    ipAddress = Word(nums) + ('.'+Word(nums))*3
    usPhoneNumber = Word(nums) + ('-'+Word(nums))*(1,2)

  If multiplying by a tuple, the two integer values represent
  min and max multiples.  Suggested by Vincent of,
  great idea, Vincent!

- Added pop() method to ParseResults.  If pop is called with an
  integer or with no arguments, it will use list semantics and
  update the ParseResults' list of tokens.  If pop is called with
  a non-integer (a string, for instance), then it will use dict
  semantics and update the ParseResults' internal dict.
  Suggested by Donn Ingle, thanks Donn!

- Fixed bug in nestedExpr, original version was overly greedy!
  Thanks to Michael Ramirez for raising this issue.

- Fixed internal bug in ParseResults - when an item was deleted,
  the key indices were not updated.  Thanks to Tim Mitchell for
  posting a bugfix patch to the SF bug tracking system!

- Fixed internal bug in operatorPrecedence - when the results of
  a right-associative term were sent to a parse action, the wrong
  tokens were sent.  Reported by Torsten Marek, nice job!

- Fixed quoted string built-ins to accept '\xHH' hex characters
  within the string.

Download pyparsing 1.4.10 at
The pyparsing Wiki is at

-- Paul

Pyparsing is a pure-Python class library for quickly developing
recursive-descent parsers.  Parser grammars are assembled directly in
the calling Python code, using classes such as Literal, Word,
OneOrMore, Optional, etc., combined with operators '+', '|', and '^'
for And, MatchFirst, and Or.  No separate code-generation or external
files are required.  Pyparsing can be used in many cases in place of
regular expressions, with shorter learning curve and greater
readability and maintainability.  Pyparsing comes with a number of
parsing examples, including:
- "Hello, World!" (English, Korean, Greek, and Spanish(new))
- chemical formulas
- configuration file parser
- web page URL extractor
- 5-function arithmetic expression parser
- subset of CORBA IDL
- chess portable game notation
- simple SQL parser
- Mozilla calendar file parser
- EBNF parser/compiler
- Python value string parser (lists, dicts, tuples, with nesting)
  (safe alternative to eval)
- HTML tag stripper
- S-expression parser
- macro substitution preprocessor

More information about the Python-announce-list mailing list