lark
lark copied to clipboard
Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.
I've create a grammar file off from the Hive CREATE syntax: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable It's ambiguous and uses some number of terminals, but loading takes too much time and the serialized parser...
Rule templates are already here. Token templates are next? @MegaIng Do you think this will be ready in the near future? I want to make a release in a few...
Greetings, and thank you for your excellent package. I'm not sure if I'm doing something wrong here, but the following CFG gives me an unambiguous parse on the input "a...
Not likely to happen naturally, but possible. For example: parser = lark.Lark("start: a\na: b\n b:c\n c:a\n | /a/") parser.parse('a') Throws all parsers into an infinite loop (the cyk parser already...
When using a standard or contextual lexer, colliding regular expressions may produce an incorrect parser, that only produces an error when encountering the obscured terminal in the input text. For...
Hi, I noticed that there's an implementation of Joop Leo's optimisation for right recursion, but it is commented [out](https://github.com/lark-parser/lark/blob/f814d91f9dc0d9989a9ef413cca0f2622427eb74/lark/parsers/earley.py#L81). I'm fairly new to the concept of this algorithm so I'm...
[RFC 5234](https://tools.ietf.org/html/rfc5234) describes the standard grammar format for internet standards, such as the notoriously-hard-to-validate email addresses. Because this standard is a dialect of EBNF and does not allow for embedded...
It seems I have some real bad problems with my tentative implementation. Launching the program several times I end up with (at least) two different outputs, even if I'm parsing...
```python >>> Lark('start: A\n A: "a"+', ambiguity='explicit', lexer='dynamic_complete').parse('aa') Tree(start, [Token(A, 'aa')]) ``` Expected: ambiguous node containing ['aa'] and ['a', 'a']
It's possible to improve Lark's speed, for all algorithms, by performing grammar simplification. Specifically, it's possible to merge adjacent anonymous terminals together, to reduce the parser work load, without affecting...