ANN: pyparsing 1.4.8 released

Paul McGuire ptmcg at
Sun Oct 7 09:32:36 CEST 2007

I'm happy to announce that I have just uploaded the latest release
(v1.4.8) of pyparsing.  This release has a few new features and
corresponding demonstration examples.  There are also a few minor
bug-fixes, and a performance speedup in the operatorPrecedence method.

Here are the notes:

- Added new helper method nestedExpr to easily create expressions
  that parse lists of data in nested parentheses, braces, brackets,

- Added withAttribute parse action helper, to simplify creating
  filtering parse actions to attach to expressions returned by
  makeHTMLTags and makeXMLTags.  Use withAttribute to qualify a
  starting tag with one or more required attribute values, to avoid
  false matches on common tags such as <TD> or <DIV>.

- Added new examples and to demonstrate
  the new features.

- Added performance speedup to grammars using operatorPrecedence,
  instigated by Stefan Reichör - thanks for the feedback, Stefan!

- Fixed bug/typo when deleting an element from a ParseResults by
  using the element's results name.

- Fixed whitespace-skipping bug in wrapper classes (such as Group,
  Suppress, Combine, etc.) and when using setDebug(), reported by
  new pyparsing user dazzawazza on SourceForge, nice job!

- Added restriction to prevent defining Word or CharsNotIn expressions
  with minimum length of 0 (should use Optional if this is desired),
  and enhanced docstrings to reflect this limitation.  Issue was
  raised by Joey Tallieu, who submitted a patch with a slightly
  different solution.  Thanks for taking the initiative, Joey, and
  please keep submitting your ideas!

- Fixed bug in makeHTMLTags that did not detect HTML tag attributes
  with no '= value' portion (such as "<td nowrap>"), reported by
  hamidh on the pyparsing wiki - thanks!

- Fixed minor bug in makeHTMLTags and makeXMLTags, which did not
  accept whitespace in closing tags.

Download pyparsing 1.4.8 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