使用ANTLR生成SQL语句

时间:2014-04-23 09:59:47

标签: sql maven antlr translate

我开始学习 ANTLR 。 目的是翻译'字符串转换为 SQL语句

我想做的一个简单例子:

如果我收到字符串"name = A and age = B" --- ANTLR ---> "select * from USERS where name = 'A' and age = 'B'"

我一直在阅读有关ANTLR的一些信息,并按照一些例子,但那些只是将输入的字符流(源文件)转换为AST。但是如何使用ANTLR翻译输入消息,并使用翻译输出?

你能给我一些亮点或告诉我在哪里可以找到一些相关的信息吗?

我正在使用Eclipse IDE和 Maven ANTLR插件

1 个答案:

答案 0 :(得分:0)

ANTLR只是一个解析器生成器。您可以将操作插入到收集信息的语法中或直接打印输出。最常见的机制是允许ANTLR以AST的形式创建中间表示,或者使用ANTLR 4创建解析树。从那里,您构建一个树木步行器来构建内部模型或直接生成输出。从内部模型(表示输出语言中的构造)开始,您可以生成输出。我通常使用StringTemplate生成结构化文本。

当输入和输出非常相似,更重要的是,输出的顺序非常相似时,你可以逃避语法指导的翻译:即直接在语法中的动作或直接应用于解析树的动作。

当输出顺序非常不同时,您必须构建某种形式的中间表示。想象一下,只需读取一堆整数并以相反的顺序将它们打印出来。你可以通过简单地打印出你看到的数字来做到这一点。我的[无耻插件]一书中解释了这一点,语言实现模式:创建自己的特定领域和通用编程语言http://amzn.com/B00A376HGG