Issue title: Parse MySQL  slow in Golang
 Issue body: Hi~
I used the g4 files in the folder `sql/mysql/Positive-Technologies`, my antlr4 sdk is Golang, the codes looks like below:

```go
func TestSlow(t *testing.T) {
	begin := time.Now()
	sql := "SELECT DATE_FORMAT(IF(COUNT(*)>0,'2021-01-02','2020-01-01'),'%Y') AS cc FROM student WHERE uid BETWEEN 1 AND 5"

	is := antlr.NewInputStream(sql)
	lexer := p.NewMySqlLexer(is)
	ts := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel)

	mp := p.NewMySqlParser(ts)
	_ = mp.DmlStatement()

	t.Log("cost:", time.Since(begin)) // cost: 4.853549529s
}

```
It works, but it seems very slow for this simple SQL `SELECT DATE_FORMAT(IF(COUNT(*)>0,'2021-01-02','2020-01-01'),'%Y') AS cc FROM student WHERE uid BETWEEN 1 AND 5`.

Please help, thanks 🙏 
 Comments: 
 Comment 0: Have you tried `SLL` parsing move and other advice from the article [Improving the performance of an ANTLR parser](https://tomassetti.me/improving-the-performance-of-an-antlr-parser/)?

If it does not work, please look at [Performance issue with Golang target](https://github.com/antlr/antlr4/issues/2888) and other issues in ANTLR repository.
 Comment 1: It will be failed if use `SLL`. I've tested the Java implementation with same codes, it only cost 18ms, I think the Golang runtime has performance problem, it's not ready for the production env.
 Comment 2: It seems to be a known problem, https://github.com/antlr/antlr4/issues/2152
 Comment 3: On [my "target agnostic" version of grammars-v4/csharp](https://github.com/kaby76/target-agnostic-csharp), the Go target takes 10 times longer than the CSharp target for the example/AllInOneNoPreprocessor.cs. Although it does work, getting there was like pulling teeth. Not only do actions in the grammar have to be prefixed with a "l." or "p." because Go does not have method invocation (unlike C++, Java, C# where you can call a method from another method on the class, eg "A1()" vs in Go with require "l." as in "l.A1()"), there is a problem with the Go target in that one cannot use the superClass option in the grammar due to a misplaced "*" in the type declarations for the lexer. The Go target needs a lot of work.
{'source': 'GithubIssues', 'repo_name_with_owner': 'antlr/grammars-v4', 'issue_id': 959105003, 'repo_stars': 8323.0}