Skip to main content

A Python port of Lua's LPeg pattern matching library

Project description

PPeg is a pattern matching library for Python, based on Parsing Expression Grammars (PEGs). It’s a port of the LPeg library from Lua.

Usage

Unlike the re module [1], PPeg patterns can handle balanced sequences

>>> from _ppeg import Pattern as P
>>> pattern = P.Grammar('(' + ( (P(1)-P.Set('()')) | P.Var(0) )**0 + ')')
>>> pattern('(foo(bar()baz))').pos
15
>>> pattern('(foo(bar(baz)').pos
-1
>>> capture = P.Cap(pattern)
>>> capture('(foo(bar()baz))').captures
['(foo(bar()baz))']

This example corresponds roughly to the following LPeg example

> lpeg = require "lpeg"
> pattern = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" }
> pattern:match("(foo(bar()baz))") -- Lua indexes begin at 1
16
> pattern:match("(foo(bar(baz)")
nil
> capture = lpeg.C(pattern)
> capture:match("(foo(bar()baz))")
"(foo(bar()baz))"

Modules

  • _cpeg.c

  • _ppeg.c
    • includes lpeg.c

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

PPeg-0.9.3.tar.gz (45.7 kB view details)

Uploaded Source

File details

Details for the file PPeg-0.9.3.tar.gz.

File metadata

  • Download URL: PPeg-0.9.3.tar.gz
  • Upload date:
  • Size: 45.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for PPeg-0.9.3.tar.gz
Algorithm Hash digest
SHA256 9c7bccbbb7023c1f5e105b10c8eeacfc268096dc0ff7c5d133fe4ced4c8ed642
MD5 e46766a39ae570414201b680d2f6e4bb
BLAKE2b-256 2a017ea4b10478922941d5294289870895af83284c3a97eedb2beb8efab47712

See more details on using hashes here.

Supported by

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