竜 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:apal...@gmail.com _______________________________________________ Python-announce-list mailing list -- python-announce-list@python.org To unsubscribe send an email to python-announce-list-le...@python.org https://mail.python.org/mailman3/lists/python-announce-list.python.org/ Member address: arch...@mail-archive.com