I always use golang.org/x/tools/cmd/goyacc to generate my lexers and parsers. It's a Go port of Lex/Yacc (Flex/Bison) that works pretty well and is very fast.
It basically works by writing your lexes and parser in a Domain Specific Language (DSL) and compiling into go. It's pretty fast.