竜 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 input 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. On this release: - validate with Python 3.12 (#313 <https://github.com/neogeny/TatSu/pull/313>) - drop support for Python 3.10 (#313 <https://github.com/neogeny/TatSu/pull/313>) - move build configuration to pyproject.toml (#316 <https://github.com/neogeny/TatSu/pull/316> #317 <https://github.com/neogeny/TatSu/pull/317>) - evaluate constant to a Python literal when possible (#304 <https://github.com/neogeny/TatSu/issues/304> #320 <https://github.com/neogeny/TatSu/pull/320>) - fix comments_re and eol_comments_re so they effectively can be None ( #307 <https://github.com/neogeny/TatSu/pull/307> #312 <https://github.com/neogeny/TatSu/issues/312> #314 <https://github.com/neogeny/TatSu/pull/314>) - skip over whitespace and comments before memoizing (#305 <https://github.com/neogeny/TatSu/issues/305> #306 <https://github.com/neogeny/TatSu/pull/306> #309 <https://github.com/neogeny/TatSu/pull/309> #318 <https://github.com/neogeny/TatSu/pull/318>) - verify that () parses to None or is ignored (#308 <https://github.com/neogeny/TatSu/pull/308>) -- Juancarlo Añez mailto:apalala@gmail.com
participants (1)
-
Juancarlo Añez