【发布时间】:2012-01-31 17:58:59
【问题描述】:
我正在使用的应用程序从文件导入中输入大量数据并相应地更新数据库列。我需要提出一个自定义规则引擎,该引擎将根据验证处理所有输入值并相应地执行数据转换。例如
我们的应用程序中的一个字段是产品名称。所以我们需要实现的规则之一是将产品名称从小写转换为大写,如果文件中的输入值是小写的。同样,需要进行许多文本/数学转换。由于这些原因,我们需要提出自定义规则引擎,在其中我们为每个属性定义规则,解析它们然后应用规则。
我知道ANTLR 是Java 的解析器生成器之一。我正在就以下问题寻求建议:
1> 关于解析器生成器工作的一般信息和实现语法的最佳实践。
2> 由于我需要完全设计这个规则引擎,任何人都可以指出我可以参考的示例规则引擎吗?从 UI 到数据库设计。我将 GWT 用于 UI,Java 用于核心逻辑,oracle 用于数据库
3> 是否还有其他用于 Java 的解析器生成器
4> 虽然我确实想遵循定义自己的语法并使用解析器生成器来构建此规则引擎的路径,但我应该考虑其他方法吗?
【问题讨论】:
-
语法似乎有点过头了,除非文件在结构上非常复杂,否则语法可能只会让你的生活更艰难。简单的字符串测试、switch 语句等就足够了。
-
好吧,我们目前的规则只是开始。正如我所说,现在会有字符串/数学转换,所以我不确定当我们有更复杂的进来时,“简单字符串测试,switch 语句”是否会很好地扩展。我不确定 Regex 是否在这里是最好的好
-
按照您描述问题的方式,不清楚选择要组合的列、选择输出列或对此数据进行任意计算的限制是什么。如果您无法为您被允许做的事情定义一组值得信赖的限制,那么您将需要图灵语言的全部功能(Java 似乎很好);要访问所有列和记录,您可能至少需要 SQL 的强大功能来进行数据访问和更新。你对你愿意计算的内容有明确的限制吗?为什么您认为另一种语言会对您有所帮助?
标签: java antlr parser-generator