【问题标题】:Generate SQL statements using ANTLR使用 ANTLR 生成 SQL 语句
【发布时间】:2014-06-08 02:07:12
【问题描述】:

我开始学习ANTLR。 目的是将字符串“翻译”成 SQL 语句

我想做的一个简单的例子:

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

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

您能否给我一些重点或告诉我在哪里可以找到有关这方面的一些信息?

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

【问题讨论】:

    标签: sql maven antlr translate


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多