我们一直在使用正则表达式来满足我们的语法要求。但是,当模式开始递归时,需要支持大约20多个模式并且维护RegEx变得非常困难。我们尝试迁移到ANTLR,并查看了我们需要的以下两个关键点。
性能 当某些表达式被迁移时,性能似乎成为一个问题。对于某些表达式,带编译汇编的RegEx大约快2倍或3倍。
可管理 ANTLR语法似乎更容易管理和开发。容纳新的表达式/构造比RegEx简单得多。
是否有人有这种迁移的类似经历。我们应该查看它还是使用RegEx?
答案 0 :(得分:0)
ANTLR的性能严重取决于您使用的语法风格 - 尤其是谓词的位置和内容。之后,ANTLR生成的递归下降语法往往会根据表达式中可用的运算符数逐渐受到影响,但是有可用的解决方案。一旦熟悉了ANTLR,你肯定会发现它对于“大型任务”比正则表达式更易于维护。但是,启动和运行并不是最简单的任务。你使用什么语言/ IDE?
¹在这里严格讲话。递归下降解析器在理解生成的代码时会发光。