[英]Java library for parsing regexes into an AST?
通常,人们会使用正则表达式将其他内容解析为AST。 我正在寻找的是一种可用于将正则表达式本身解析为AST的工具,然后可以对其进行象征性操作。 假设我有正则表达式
(c(o)w)/(.*?)/omg
我希望能够提出类似的问题
.
,正则表达式中的第10个字符,是捕获组的开始吗? 并能够以某种有意义的方式操纵正则表达式,例如:
在将其序列化为字符串之前。
我在java.util.regex.Pattern
周围戳了一下,但它的内部都是私有的,所以我无法访问它们。 我可以使用任何第三方库吗?
我将使用ANTLR为正则表达式创建一个词法分析器/解析器。 根据要使用的正则表达式语法的多少,这可能很容易变得很复杂。 Antlr附带了一个漂亮的图形编辑器,您可以在其中测试您正在创建的语法文件。 生成的AST在标准Java程序中非常易于操作。 如果您是Antlr的新手,我强烈推荐Terence的Antlr一书。
看看我基于ANTLR的PCRE解析器: https : //github.com/bkiers/PCREParser
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.