0

我正在编写一个语法来解析一个如下所示的日志文件:

V9013_MURGIN_AE_7340057[01/10/2013 10:07:33]:DEBUG:<PCDATA>
V9013_MURGIN_AE_7340057[01/10/2013 10:07:33]:DEBUG:<PCDATA>
etc...

其中PCDATA可以包含任何符号(包括\n),并且“7340057”是一个 PID(进程 ID)。

问题是,如何描述结束PCDATA

在你看到 a 之前,我不能说去 nonreedy 并匹配任何东西V9013_MURGIN_AE_7340057,因为那是 PID,它会在日志文件中发生变化,所以我不能将它的值硬编码为语法。

有没有办法做这样的事情:

  1. 我第一次匹配 a 7340057(或当前文件中的任何内容)时,将其放入某个 var 中,例如$PID
  2. 描述PCDATA为 nongreedy (.)*-match until$PID也就是说,是否可以有一个变量(参数化)令牌定义?

提前致谢。

4

1 回答 1

0

我同意不使用 ANTLR 的建议。

然而,我之前处理这个问题的方式(相当无效率)是这样的:

pcdata : (PID)=> () | . pcdata ;
于 2013-01-17T13:59:04.190 回答