我正在编写一个语法来解析一个看起来像这样的日志文件:
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
的结尾?
我不能说goreedy并匹配任何东西,直到你看到V9013_MURGIN_AE_7340057
,因为那是PID并且它在日志文件中发生变化,因此我无法将其值硬编码为语法。
有没有办法做这样的事情:
7340057
(或当前的任何内容)
文件),把它放到一些var中,比如$PID
PCDATA
描述为nongreedy (.)*
- 匹配到$PID
也就是说,是否可以使用变量(参数化)令牌定义?提前致谢。
答案 0 :(得分:0)
我同意不使用ANTLR的建议。
然而,我之前处理这个问题(非常有效)的方式是:
pcdata : (PID)=> () | . pcdata ;