Skip to main content

A parser combinator and formatter combinator library that's easy to use and that provides informative error messages.

Project description

Parcon is a parser combinator library. It can be used for parsing both normal text and binary data. It’s designed to be easy to use and to provide informative error messages.

Pargen, which is provided as a submodule of Parcon, is a formatter combinator library. It’s much the opposite of Parcon: while Parcon is used to parse text into various objects, Pargen is used to format objects into text. As an example, if you wanted to reimplement Python’s json module, you would use Parcon to implement json.loads and Pargen to implement json.dumps.

All of the classes, and most of the functions, in Parcon are comprehensively documented. The best place to look for help is in Parcon’s module documentation.

Here’s an example of a simple expression evaluator written using Parcon:

from parcon import *
from decimal import Decimal
import operator
expr = Forward()
number = (+Digit() + -(SignificantLiteral(".") + +Digit()))[flatten]["".join][Decimal]
term = number | "(" + expr + ")"
term = InfixExpr(term, [("*", operator.mul), ("/", operator.truediv)])
term = InfixExpr(term, [("+", operator.add), ("-", operator.sub)])
expr << term

This expression evaluator can be used thus:

print expr.parse_string("1+2") # prints 3
print expr.parse_string("1+2+3") # prints 6
print expr.parse_string("1+2+3+4") # prints 10
print expr.parse_string("3*4") # prints 12
print expr.parse_string("5+3*4") # prints 17
print expr.parse_string("(5+3)*4") # prints 32
print expr.parse_string("10/4") # prints 2.5

I’ve written some posts on my blog providing more Parcon examples.

More information is available on Parcon’s website.

Parcon is currently much more comprehensively documented than Pargen is. Improved documentation for Pargen will come soon.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parcon-0.1.17.tar.gz (93.0 kB view details)

Uploaded Source

File details

Details for the file parcon-0.1.17.tar.gz.

File metadata

  • Download URL: parcon-0.1.17.tar.gz
  • Upload date:
  • Size: 93.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for parcon-0.1.17.tar.gz
Algorithm Hash digest
SHA256 d61f0f6da6c033fb589a368782b1e4f86f4df956f1a4bbd6b7c78f9bc6245ba3
MD5 285ea1172d3c082a9d032d17dfbd2d80
BLAKE2b-256 1a4e84a0209b196c28e33fa61096e84d7d2de9a9bac733ed3f030ee0f872b9ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page