Open Source Parser Generators in Python
|SimpleParse is a Python package providing a simple and fast parser generator using a modified version of the mxTextTools text-tagging engine. SimpleParse allows you to generate parsers directly from your EBNF grammar.
Unlike most parser generators, SimpleParse generates single-pass parsers (there is no distinct tokenization stage), an approach taken from the predecessor project (mcf.pars) which attempted to create \"autonomously parsing regex objects\". The resulting parsers are not as generalized as those created by, for instance, the Earley algorithm, but they do tend to be useful for the parsing of computer file formats and the like (as distinct from natural language and similar \"hard\" parsing problems).
Go To SimpleParse
|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.
Go To PyParsing
|PLY is an implementation of lex and yacc parsing tools for Python. It uses LR-parsing which is reasonably efficient and well suited for larger grammars and provides most of the standard lex/yacc features including support for empty productions, precedence rules, error recovery, and support for ambiguous grammars.
Go To PLY (Python Lex-Yacc)
|Yapps (Yet Another Python Parser System) is an easy to use parser generator that is written in Python and generates Python code. Yapps is simple, is easy to use, and produces human-readable parsers. It is not fast, powerful, or particularly flexible. Yapps is designed to be used when regular expressions are not enough and other parser systems are too much: situations where you may write your own recursive descent parser.
Go To Yapps (Yet Another Python Parser System)
|ZestyParser is a Python package for writing data parsers. ZestyParser doesn't make you define your grammar in a weird, non-Pythonic syntax. Everything is written how you normally write Python. I
Go To ZestyParser