sql字符串到AST一般有两个过程。
词法解析(将sql语句中每一个元素解析成不同类别的token,可能是关键字,用户变量,操作符),
语法解析(匹配sql句式,将前一阶段解析出的token方法对应句式中的各个位置)
这两个过程英文叫法 lex & yacc。
tidb 的 parser 由go语言编写。语法解析用的goYacc,词法没有成熟的go实现。所以自己实现,主要代码在parser项目的lexer.go文件中。
对于并发的支持,我在parser源码中没看到关于协程的操作。并发是由TiDB控制的,parser只是单纯的做sql解析罢。
单独使用作为其他项目的sql解析器没试过,可以试试。