gopkg.in/alecthomas/participle.v0 (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:  Here's an example of an EBNF grammar.
Keywords: ast|ebnf|go|golang|grammar|lexer|parser|parser-api|parser-framework|parser-library|participle