Parsing ANTLR是否适合解析文本报告?

Parsing ANTLR是否适合解析文本报告?,parsing,antlr,text-processing,Parsing,Antlr,Text Processing,我目前正在使用正则表达式解析文本报告,以便提取各种信息。虽然这种方法可行,但维护正则表达式变得越来越困难。我想知道从长远来看,Antlr能否提供更好的方法来完成这项任务。顺便说一句,我以前没有用过Antlr 顺便说一句,Antlr主要用于解析语言,但我的报告不是一种语言。另一方面,报告遵循一些模式,这就是我如何使用正则表达式提取信息的方法 关于我的文本报告的更多信息:报告有几个部分,我只对其中一些部分感兴趣,而忽略了其余部分。例如,有一个线程转储部分: ===Start=== (some tex

我目前正在使用正则表达式解析文本报告,以便提取各种信息。虽然这种方法可行,但维护正则表达式变得越来越困难。我想知道从长远来看,Antlr能否提供更好的方法来完成这项任务。顺便说一句,我以前没有用过Antlr

顺便说一句,Antlr主要用于解析语言,但我的报告不是一种语言。另一方面,报告遵循一些模式,这就是我如何使用正则表达式提取信息的方法

关于我的文本报告的更多信息:报告有几个部分,我只对其中一些部分感兴趣,而忽略了其余部分。例如,有一个线程转储部分:

===Start===
(some text I do not care about.)
thread <thread-number> <owning-proc-name> <proc-id>
<resource-owned-by-thread> (optional line)
...
===End===
===Start===
(some text I do not care about, followed by the stack trace of the app)
<app-name>
<stack-layer1>
<stack-layer2>
...
===End===
==开始===
(有些文字我不在乎。)
线
(可选行)
...
==结束===
然后有一个终止的应用程序部分:

===Start===
(some text I do not care about.)
thread <thread-number> <owning-proc-name> <proc-id>
<resource-owned-by-thread> (optional line)
...
===End===
===Start===
(some text I do not care about, followed by the stack trace of the app)
<app-name>
<stack-layer1>
<stack-layer2>
...
===End===
==开始===
(一些我不关心的文本,后跟应用程序的堆栈跟踪)
...
==结束===
我希望通过解析报表得到的是一个数据对象,该对象使用getter方法处理报表中的各种数据


这是适合Antlr的任务还是我应该去别处看看?多谢各位

你能用正则表达式轻松过滤掉你不想要的文本吗?如果是这样,您可以采取一种非常有效的混合方法:

  • 通过正则表达式过滤器运行报告以删除要忽略的文本
  • 通过ANTLR解析器运行报告,以分解您关心的部分
  • 要使其工作,您关心的部分必须符合您可以为其编写ANTLR语法的语言

    另一种选择是编写一个自定义扫描仪,将要忽略的部分剥离出来,并标记其余部分


    这一切都取决于你需要保留的部分的复杂性和规律性

    你能用正则表达式轻松过滤掉你不想要的文本吗?如果是这样,您可以采取一种非常有效的混合方法:

  • 通过正则表达式过滤器运行报告以删除要忽略的文本
  • 通过ANTLR解析器运行报告,以分解您关心的部分
  • 要使其工作,您关心的部分必须符合您可以为其编写ANTLR语法的语言

    另一种选择是编写一个自定义扫描仪,将要忽略的部分剥离出来,并标记其余部分

    这一切都取决于你需要保留的部分的复杂性和规律性