Использование ANTLR для разбора файла журнала
Я только начинаю с ANTLR и пытаюсь разобрать какой-то шаблон из файла журнала
например: файл журнала:
7114422 2009-07-16 15: 43: 07,078 [LOGTHREAD] INFO StatusLog - вход задачи 0: uk.project.Evaluation.Input.Function1 (selected = ["red", "yellow"]) {}
7114437 2009-07-16 15: 43: 07,093 [LOGTHREAD] INFO StatusLog - вывод задачи 0: uk.org.project.Evaluation.Output.Function2 (selected = ["Rocket"]) {}
7114422 2009-07-16 15: 43: 07,078 [LOGTHREAD] INFO StatusLog - вход задачи 0: uk.project.Evaluation.Input.Function3 (selected = ["blue", "yellow"]) {}
7114437 2009-07-16 15: 43: 07,093 [LOGTHREAD] INFO StatusLog - вывод задачи 0: uk.org.project.Evaluation.Output.Function4 (selected = ["Speech"]) {}
Теперь мне нужно проанализировать этот файл, чтобы найти только «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';