grappa
grappa copied to clipboard
Write parsers for arbitrary text inputs, entirely in Java, with no preprocessing phase
https://github.com/hatstand0/Staskken
When using firstOf() with only String arguments and if one String has length 1, then parser generation fails with a reference to trie(). This is incorrect for two reasons: I...
Hi, I've been looking for some good examples of extracting parsing errors but can't seem to find any anywhere. any chance you can help out?
The following grammar contains three rules. Each of these rules should match inputs "a" or "b", optionally followed by spaces. rule1 explicitly matches the trailing whitespace with zeroOrMore(sp()). This rule...
anyOf(Characters.ALL) does match even if no more input is available. It should not match because no input character is available and thus no input character could have been consumed. The...
A rule that is declared "static" causes a "java.lang.VerifyError" during parser generation. Instead Grappa should either support this or else should generate a proper error message. ``` $ gradle :compileJava...
When adding an element to a collection inside a method that creates a rule, a NullPointerException occurs during "createParser". Example: ``` java package test; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List;...
When using rules that have parameters, @Cached can be used to allow recursive calls. The generated caching code then checks all parameters for equality when reusing rules. This mechanism works...
When attaching a label to a Rule via method `.label("some label")` it is not correctly applied to the rule. Attaching a label via annotation `@Label` works fine. Example: ``` java...