/lark_cython

Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance

Primary LanguageCythonMIT LicenseMIT

Lark-Cython

Cython plugin for Lark, reimplementing the LALR parser & lexer for better performance on CPython.

Install:

pip install lark-cython

Usage:

import lark_cython

parser = Lark(grammar, parser="lalr", _plugins=lark_cython.plugins)

# Use Lark as you usually would, with a huge performance boost

See the examples for more.

Differences from Lark

  • Token instances do not inherit from str. You must use the value attribute to get the string.

Other caveats

  • Postlexer isn't currently implemented

Speed

In current benchmarks, lark-cython is about 50% to 80% faster than Lark.

We're still in the early stages, and in the future, lark-cython might go a lot faster.

Other

License: MIT

Author: Erez Shinan

Special thanks goes to Datafold for commissioning the draft for lark-cython, and allowing me to release it as open-source.