gpt4 book ai didi

java - 是否可以将ANTLR3语法转换为正则表达式?

转载 作者:行者123 更新时间:2023-12-01 17:36:59 25 4
gpt4 key购买 nike

我有一个 ANTLR3 简单语法解析器,它接受短文本行并将它们转换为 Java 对象。接下来,我有一个很大的文本行列表。其中一些(少于1%)可以转换,因为它们符合语法。

我需要将它们全部传递给解析器,以便了解哪些是可转换的,并创建 Java 对象的集合。操作非常耗时。在发送到 ANTLR3 之前通过正则表达式传递它们会更有效。

我可以自己创建这样的正则表达式,但从 ANTLR3 解析器动态获取它会更好。可以吗?

最佳答案

一般来说,只有正则语言才能有描述它们的正则表达式。 (大多数 RE 引擎支持也匹配一些非常规语言的功能(例如通过反向引用),但仍然不是所有上下文无关甚至通用形式语言。)

我并不是真正的antlr专家,但我认为它的语法可以匹配不可重新匹配的语言。

所以,即使你的问题的理论可解性并没有真正给出,它也取决于语法。

可能是这样

  • 您的语法实际上是常规语法,或者
  • 存在一种常规语言,它是语法语言的超集 - 因此 RE 可以过滤掉大多数不匹配的行,而某些行只会被语法/解析器过滤掉。

在不查看语法的情况下,很可能没有确定的方法来确定。

此外,正则表达式不一定比解析器更快。

关于java - 是否可以将ANTLR3语法转换为正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com