Я как раз начиная с 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] INFO StatusLog - Задача 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';
Хороший пример, но оленья кожа works =/ –
@arkilus, если «он» не работает, это не хороший пример, я бы предположил ... Он * делает * работу, однако. Тот факт, что он не работает с вами, - это совсем другая история :) –
Простите, Барт, ваш пример действительно работает отлично, проблема была в моем пути сборки ... btw благодарит за вашу замечательную помощь с ANTLR в SO :) –