带有变量的令牌定义



我正在写一个语法来解析一个日志文件,看起来像这样:

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的结束?

我不能说不需要匹配任何东西,直到你看到一个V9013_MURGIN_AE_7340057,因为那是PID,它在日志文件中改变,所以我不能硬编码它的值到语法中。

是否有这样的方法:

  1. 我第一次匹配7340057(或任何它在当前文件),放入某个变量,比如$PID
  2. 描述PCDATA为非贪婪(.)*匹配直到$PID,也就是说,是否有可能有一个变量(参数化)令牌定义?

我同意不使用ANTLR的建议。

然而,我以前处理这个问题的方法(相当低效)是这样的:

pcdata : (PID)=> () | . pcdata ;

相关内容

  • 没有找到相关文章

最新更新