Skip to main content
license
pyversions
fury
actions
docs

竜 TatSu-LTS

竜 TatSu-LTS is a friendly fork of 竜 TatSu that guarantees compatibility with all supported versions of Python. Compatibility with older Python versions is maintained as long as that does not require additional changes. Only patches required to support Python version older than the ones supported by the upstream project are applied. 竜 TatSu-LTS releases use the same version number as the 竜 TatSu release on which they are based and should be published shortly after the corresponding upstream release.

Both the 竜 TatSu and 竜 TatSu-LTS distributions install a Python package and an executable named tatsu. Users can thus switch seamlessly between the two, depending on which Python version support guarantees they prefer. For project that desire to support a wide range of Python versions, there is no drawback in depending on 竜 TatSu-LTS other than the short delay in the release of new versions.

竜 TatSu

竜 TatSu is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python.

Why use a PEG parser? Because regular languages (those parsable with Python’s re package) “cannot count”. Any language with nested structures or with balancing of demarcations requires more than regular expressions to be parsed.

竜 TatSu can compile a grammar stored in a string into a tatsu.grammars.Grammar object that can be used to parse any given input, much like the re module does with regular expressions, or it can generate a Python module that implements the parser.

竜 TatSu supports left-recursive rules in PEG grammars using the algorithm by Laurent and Mens. The generated AST has the expected left associativity.

竜 TatSu expects a maintained version of Python (>=3.14 at the moment). While no code in 竜 TatSu yet depends on new language or standard library features, the authors don’t want to be constrained by Python version compatibility considerations when developing future releases. That said, currently all tests run in versions down to Python 3.12.

If you need support for previous versions of Python, please consider TatSu-LTS, a friendly fork of 竜 TatSu aimed at compatibility with other versions of Python still used by many projects. The developers of both projects work together to promote compatibility with most versions of Python.

Installation

$ pip install TatSu-LTS

Using the Tool

竜 TatSu can be used as a library, much like Python’s re, by embedding grammars as strings and generating grammar models instead of generating Python code.

This compiles the grammar and generates an in-memory parser that can subsequently be used for parsing input with:

parser = tatsu.compile(grammar)

Compiles the grammar and parses the given input producing an AST as result:

ast = tatsu.parse(grammar, input)

The result is equivalent to calling:

parser = compile(grammar)
ast = parser.parse(input)

Compiled grammars are cached for efficiency.

This compiles the grammar to the Python sourcecode that implements the parser:

parser_source = tatsu.to_python_sourcecode(grammar)

This is an example of how to use 竜 TatSu as a library:

GRAMMAR = '''
    @@grammar::CALC


    start = expression $ ;


    expression
        =
        | expression '+' term
        | expression '-' term
        | term
        ;


    term
        =
        | term '*' factor
        | term '/' factor
        | factor
        ;


    factor
        =
        | '(' expression ')'
        | number
        ;


    number = /\d+/ ;
'''


if __name__ == '__main__':
    import json
    from tatsu import parse
    from tatsu.util import asjson

    ast = parse(GRAMMAR, '3 + 5 * ( 10 - 20 )')
    print(json.dumps(asjson(ast), indent=2))

竜 TatSu will use the first rule defined in the grammar as the start rule.

This is the output:

[
  "3",
  "+",
  [
    "5",
    "*",
    [
      "10",
      "-",
      "20"
    ]
  ]
]

Documentation

For a detailed explanation of what 竜 TatSu is capable of, please see the documentation.

Questions?

Please use the [tatsu] tag on StackOverflow for general Q&A, and limit Github issues to bugs, enhancement proposals, and feature requests.

Changes

See the RELEASES for details.

License

You may use 竜 TatSu under the terms of the BSD-style license described in the enclosed LICENSE file. If your project requires different licensing please email.

Metadata

Release files for TatSu-LTS 5.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for TatSu-LTS 5.16.0
File Size Uploaded
tatsu_lts-5.16.0.tar.gz 226.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for TatSu-LTS 5.16.0
File Interpreter ABI Platform
tatsu_lts-5.16.0-py3-none-any.whl Python 3 none any Details

Total release size: 309.5 kB

Release files / tatsu_lts-5.16.0.tar.gz

Download URL tatsu_lts-5.16.0.tar.gz
Size 226.5 kB
Tags Source
SHA-256 checksum
How to use checksums
40ad376b4ed4e139a8d00d00bd6659d44c3b7546933fb3314132f776bfa1f44f
BLAKE2b-256 checksum
How to use checksums
d3819ab714191017d23a0e73921e7d869890e5bf6a5eca89dee57d2b76c6c536
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 14, 2026.

Transparency log

Release files / tatsu_lts-5.16.0-py3-none-any.whl

Download URL tatsu_lts-5.16.0-py3-none-any.whl
Size 83.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
43b21f741a8d1b03148e84294aa6867ab0607f9c3325d93df8b0cf3ad8ece74b
BLAKE2b-256 checksum
How to use checksums
84d3c4c50188b3a75530eab685899c2efae85a1892be50335f4700963d8a1e14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

5.16.0 This release

2 release files

5.15.1

2 release files

5.14.0

2 release files

5.13.2

2 release files

5.13.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page