Antlr4 - 语法解析日志文件



我正在尝试解析日志文件条目。

LogGram.g4

grammar LogGram;
logs: log* ;
log : dateformat Identifier '[' className ']' '(' thread ')'
;
thread : Letter+ SPECIAL* LetterOrDigit+
;
className : Identifier ('.' Identifier)* ;
dateformat : DATE TMSTAMP ;    
Identifier : Letter LetterOrDigit* ;
Letter : [a-zA-Z$_] ;
LetterOrDigit : [a-zA-Z0-9$_];
SPECIAL : [-@#,;:'"/] ;
DATE : DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ;
TMSTAMP : DIGIT DIGIT ':' DIGIT DIGIT ':' DIGIT DIGIT ',' DIGIT DIGIT DIGIT         
;
DIGIT : [0-9] ;
WS : [ trnu000C]+ -> skip;

服务器.log

2017-08-10 12:50:56,081 ERROR [io.undertow.request] (default task-32)

解析和打印时的控制台输出

line 1:53 mismatched input 'default' expecting Letter
2017-08-10 12:50:56,081 ERROR [io.undertow.request] (defaulttask-32) 

为什么在打印输出之前出现不匹配行?

我不是antlr专家。只是一个想法

SPECIAL : [-@#,;:'"/] ;

使用-用于定义范围的字符 你能尝试另一种方式吗

HYPHEN : '-';
SPECIAL : [@#,;:'"/] | HYPHEN ;

相关内容

  • 没有找到相关文章

最新更新