Skip to main content

Plex is a library building lexical analysers

Project description

Plex is a library building lexical analysers.

Plex is a Python module for constructing lexical analysers, or scanners. Plex scanners have almost all the capabilities of the scanners generated by GNU Flex, and are specified in a very similar way. Tokens are defined by regular expressions, and each token has an associated action, which may be to return a literal value, or to call an arbitrary function.

Plex is designed to fill a need that is left wanting by the existing Python regular expression modules. If you’ve ever tried to use one of them for implementing a scanner, you will have found that they’re not really suited to the task. You can define a bunch of regular expressions which match your tokens all right, but you can only match one of them at a time against your input. To match all of them at once, you have to join them all together into one big r.e., but then you’ve got no easy way to tell which one matched. This is the problem that Plex is designed to solve.

Another advantage of Plex is that it compiles all of the regular expressions into a single DFA. Once that’s done, the input can be processed in a time proportional to the number of characters to be scanned, and independent of the number or complexity of the regular expressions. Python’s existing regular expression matchers do not have this property.

More documentation

You can get more information in the Sphinx-based documentation, located at http://packages.python.org/plex/.

Feedback and getting involved

Contact

Original author :

Computer Science Department,
University of Canterbury,
Christchurch,
New Zealand

Maintainer : Stephane Klein <stephane@harobed.org>

Changes

2.0.0 (2009-12-13)

  • Create a Plex python package

  • Convert documentation to Sphinx

  • Convert tests to nose

  • Format the source code with PEP8 recommendations

    • 4 spaces indentation

    • convert package and modules names to lowers cases

1.1.5

  • Eliminated a syntax warning about assigning to None when using with Python 2.3.

1.1.4

  • Fixed bug causing argument of Rep or Rep1 to fail to match following a newline.

1.1.3

  • Fixed bug causing Eol to fail to match at the beginning of a line in some circumstances.

1.1.2

  • Changed Scanner.yield() to Scanner.produce() to accommodate Python 2.3, where yield is a keyword.

  • Changed test10 to not rely so much on details of string repr.

1.1.1

  • Fixed two minor bugs: uncommented Scanner.next_char() and added import of types to Regexps.py.

1.1

  • Added support for case-insensitive matches.

1.0

  • First official release.

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

plex-2.0.0dev.tar.gz (20.7 kB view details)

Uploaded Source

File details

Details for the file plex-2.0.0dev.tar.gz.

File metadata

  • Download URL: plex-2.0.0dev.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for plex-2.0.0dev.tar.gz
Algorithm Hash digest
SHA256 07b4ce0ea8fe5928f5c8abdbf08b80edfd44ea90cc9c8c2fe233f59890498d28
MD5 2b0313b4b0d22d946bfd255657329ab7
BLAKE2b-256 ffa0f5bd74e21a5945b85cd36c99ffc32ecc95d7ad020cc97b52e7f319fd4cb6

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