首页 > > > 用 Go 构建一个 SQL 解析器
在本文中,小编将向大家简单介绍如何在 Go 中构造 LL(1) 解析器,并应用于解析SQL查询。希望大家能用 Go 对简单的解析器算法有一个了解和简单应用。
摘要
本文旨在简单介绍如何在 Go 中构造 LL(1) 解析器,在本例中用于解析SQL查询。
为了简单起见,我们将处理子选择、函数、复杂嵌套表达式和所有 SQL 风格都支持的其他特性。这些特性与我们将要使用的策略紧密相关。
1分钟理论
一个解析器包含两个部分:
词法分析
让我们用例子来定义一下。“Tokenising”以下查询:
、









深入理解
这个实验非常适合:
然而,这种方法可能会变得单调乏味,而且有一定的局限性。考虑一下如何解析任意复杂的复合表达式(例如 sqrt(a) =(1 *(2 + 3)))。
要获得更强大的解析模型,请查看解析器组合符。goyacc 是一个流行的Go实现。
下面是完整的解析器地址:
http://github.com/marianogappa/sqlparser
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3402/viewspace-3125842/ ,如需转载,请注明出处,否则将追究法律责任。