No description or website provided.
Branch: master
Clone or download
ptmcg Add compiler from rosettacode.org; fix bug in ParserElement.runTests …
…that interpreted newlines in quotes as test delimiters
Latest commit ae5adb0 Jan 31, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Update examples and unit tests to more preferred coding styles, impor… Jan 31, 2019
docs Use HTTPS URLs where available in docs, examples, and comments Dec 25, 2018
examples Add compiler from rosettacode.org; fix bug in ParserElement.runTests … Jan 31, 2019
test Trim trailing white space throughout the project Dec 22, 2018
.coveragerc Move comment up a line Dec 15, 2017
.gitignore Update .gitignore with a generated one Nov 21, 2017
.scrutinizer.yml Enable code rating Oct 25, 2018
.travis.yml Update Lucene grammar example, but remove from Travis-CI acceptance s… Dec 31, 2018
CHANGES Add note that explain() is only supported under Python 3. Jan 9, 2019
CODE_OF_CONDUCT.rst Trim trailing white space throughout the project Dec 22, 2018
LICENSE Convert CRLF->CR in CHANGES, LICENSE, and add docs/ to tarball Nov 21, 2018
MANIFEST.in Not sure how I managed to screw up building documentation again. Nov 21, 2018
MANIFEST.in_bdist Initial conversion to Sphinx generated documentation. Nov 20, 2018
README.rst Initial conversion to Sphinx generated documentation. Nov 20, 2018
genEpydoc.bat remove old release structure Sep 18, 2018
makeRelease.bat Trim trailing white space throughout the project Dec 22, 2018
pyparsing.py Add compiler from rosettacode.org; fix bug in ParserElement.runTests … Jan 31, 2019
requirements-dev.txt Implement testing and coverage for multiple py versions using scrutin… Oct 25, 2018
scrutinizer-pyenv.sh Trim trailing white space throughout the project Dec 22, 2018
setup.cfg Merge branch 'master' into wheel Jul 14, 2018
setup.py Remove distutils fallback and outdated comment Dec 22, 2018
simple_unit_tests.py Add tests to show use of Combine and simple Regex Jan 31, 2019
tox.ini Trim trailing white space throughout the project Dec 22, 2018
unitTests.py Update examples and unit tests to more preferred coding styles, impor… Jan 31, 2019
update_pyparsing_timestamp.py Trim trailing white space throughout the project Dec 22, 2018

README.rst

PyParsing – A Python Parsing Module

Build Status

Introduction

The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions. The pyparsing module provides a library of classes that client code uses to construct the grammar directly in Python code.

Here is a program to parse “Hello, World!” (or any greeting of the form “salutation, addressee!”):

from pyparsing import Word, alphas
greet = Word( alphas ) + "," + Word( alphas ) + "!"
hello = "Hello, World!"
print(hello, "->", greet.parseString( hello ))

The program outputs the following:

Hello, World! -> ['Hello', ',', 'World', '!']

The Python representation of the grammar is quite readable, owing to the self-explanatory class names, and the use of ‘+’, ‘|’ and ‘^’ operator definitions.

The parsed results returned from parseString() can be accessed as a nested list, a dictionary, or an object with named attributes.

The pyparsing module handles some of the problems that are typically vexing when writing text parsers: - extra or missing whitespace (the above program will also handle “Hello,World!”, “Hello , World !”, etc.) - quoted strings - embedded comments

The examples directory includes a simple SQL parser, simple CORBA IDL parser, a config file parser, a chemical formula parser, and a four- function algebraic notation parser, among many others.

License

MIT License. See header of pyparsing.py

History

See CHANGES file.