我只是用ANTLR开始,试图解析一些模式出来一个日志文件使用ANTLR来分析日志文件
例如:日志文件:
7114422 2009-07- 16 15:43:07078 [LOGTHREAD] INFO StatusLog - 任务0 输入: uk.project.Evaluation.Input.Function1(选择= [ “红色”, “黄色”]){}
7114437 2009- 07-16 15:43:07,093 [LOGTHREAD]信息状态日志 - 任务0 输出: uk.org.project.Evaluation.Output.Function2(选择= [ “火箭”]){}
7114422 2009-07-16 15:43:07078 [LOGTHREAD] INFO StatusLog - 任务0 输入: uk.project.Evaluation.Input.Function3(选择= [ “蓝色”, “黄色”]){}
7114437 2009-07-16 15:43:07093 [LOGTHREAD] INFO StatusLog - 任务0 输出: uk.org.project.Evaluation.Output.Function4(选择= [ “语音”]){}
现在我必须解析这个文件才能找到'Evaluation.Input.Function1',它的值是'red'和'yellow'以及'Evaluation.Output.Function2'和'Rocket'的值,并忽略其他所有内容, 2下面的输入输出功能3,4。有许多这样的输入和输出功能,我必须找到这样的输入/输出功能集。这是我尝试过的语法,它不起作用。任何帮助,将不胜感激。是我在写作的语法和ANTLR的第一次尝试它变得相当艰巨现在..
grammar test;
tag : inputtag+ outputtag+ ;
//Input tag consists of atleast one inputfunction with one or more values
inputtag: INPUTFUNCTIONS INPUTVALUES+;
//output tag consists of atleast one ontput function with one or more output values
outputtag : OUTPUTFUNCTIONS OUTPUTVALUES+;
INPUTFUNCTIONS
: INFUNCTION1 | INFUNCTION2;
OUTPUTFUNCTIONS
:OUTFUNCTION1 | OUTFUNCTION2;
// Possible input functions in the log file
fragment INFUNCTION1
:'Evaluation.Input.Function1';
fragment INFUNCTION2
:'Evaluation.Input.Function3';
//Possible values in the input functions
INPUTVALUES
: 'red' | 'yellow' | 'blue';
// Possible output functions in the log file
fragment OUTFUNCTION1
:'Evaluation.Output.Function2';
fragment OUTFUNCTION2
:'Evaluation.Output.Function4';
//Possible ouput values in the output functions
fragment OUTPUTVALUES
: 'Rocket' | 'Speech';
很好的例子,但犯规作品=/ –
@arkilus,如果“它”不起作用,那么它就不是一个好例子,我会假设......但它确实有效。事实上,它不适用于你是一个完全不同的故事:) –
对不起巴特,你的例子实际上完美的作品,问题是与我的构建路径...顺便谢谢你的美妙的帮助与ANTLR在所以:) –