繁体   English   中英

用于将正则表达式解析为AST的Java库?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM