Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们一直在使用正则表达式来满足我们的语法要求。然而,大约有 20 多种模式需要支持,当模式开始变得递归时,维护 RegEx 变得非常困难。我们尝试迁移到 ANTLR,并查看了我们需要的以下两个关键点。
性能 迁移某些表达式时,性能似乎是一个问题。对于某些表达式,带有已编译程序集的 RegEx 大约快 2 倍或 3 倍。
可管理性 ANTLR 语法似乎更容易管理和开发。容纳新的表达式/结构比 RegEx 简单得多。
有没有人有类似的迁移经历。我们应该看看它还是使用 RegEx?
ANTLR 的性能在很大程度上取决于您使用的语法风格——尤其是谓词的位置和内容。之后,ANTLR 生成的递归下降语法往往会根据表达式中可用的运算符数量逐渐受到影响¹,但有可用的解决方案。一旦你熟悉了 ANTLR,你肯定会发现它比正则表达式更易于维护。但是,启动和运行并不是目前最简单的任务。您使用的是什么语言/IDE?
¹在这里严格谈论性能。在理解生成的代码时,递归下降解析器大放异彩。