github.com/alecthomas/participle/v2 (go): Package participle constructs parsers from definitions in struct tags and parses directly into those structs. The approach is philosophically similar to how other marshallers work in Go, "unmarshalling" an instance of a grammar into a struct.  The supported annotation syntax is:  The following modifiers can be used after any expression:  Here's an example of an EBNF grammar.
Keywords: ast|ebnf|go|golang|grammar|lexer|parser|parser-api|parser-framework|parser-library|participle