说我有一个非常基本的规则,如下面的那个
if a<b
then set a=25
else set a=-25
我需要使用Java来评估它。进行这些解析的最佳方法是什么?使用正则表达式可能非常困难并且很难维护正确吗?
有人可以建议一种方法吗?如果您需要任何进一步的信息,请与我们联系。
答案 0 :(得分:1)
如果您的语法是常规的,则可以使用正则表达式。如果不是,则需要使用更复杂的工具,例如Lexers和Parsers:Antlr或Yacc/Lex/Bison。
如果您对语言设计了解不多,建议您在潜水前阅读book。
答案 1 :(得分:1)
根据您调整规则语法的方式/数量,您可以使用Groovy或JRuby;他们都非常擅长实现紧密集成的DSL。在实现外部DSL之前,我会认真考虑这种方法,尽管Antlr让它非常简单。