Я планирую создать парсер, который анализирует только конкретный формат, как показано ниже.Как сделать парсер после создания файла parser.java с помощью ANTLR4?
Dec 17 14:00:00 IP firewall,info FFFW forward: in:<pppoe-mm.demo.649> out:sfp-sfpplus1.vlan113, proto TCP (ACK,PSH), IP:PORT->IP:PORT, NAT (IP:PORT->IP:PORT)->IP:PORT, len 250
Это один из журналов для маршрутизатора. Я наивный разработчик. И только что встретил ANTLR4 несколько дней назад. Используя ANTLRWorks2, я проверил свою грамматику. Я создал lexer и parser - два класса с использованием ANTLR4. Отныне я не знаю, что делать. Пожалуйста, направляйте.
Я предполагаю, что мне нужно создать другой java-файл, который импортирует файл parser.java, и в этом файле мне приходится писать логику парсера.
Я прилагаю грамматический файл здесь.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
grammar Hello;
r : MONTH ID TIME IP X UNAME Y PROTOCOL Z FULLIP SEP FULLIP W FULLIP SEP FULLIP V SEP FULLIP P; // match keyword hello followed by an identifier
MONTH:[A-Z][a-z]+;
ID : [0-9]+ ; // match lower-case identifiers
TIME : ID SEPERATOR ID SEPERATOR ID;
SEPERATOR: [:] | [.];
SEP: [-][>] ;
IP: ID SEPERATOR ID SEPERATOR ID SEPERATOR ID ;
FULLIP: IP SEPERATOR ID/*Port*/ ;
X: [a-z]+[,][a-z]+[ ][A-Z]+[ ][a-z]+[:][ ][a-z]+[:][<] ;
UNAME: [a-z]+[-][a-z]+[.][a-z]+[.][0-9]+ ;
Y: [>][ ][a-z]+[:][a-z]+[-][a-z]+[0-9][.][a-z]+[0-9]+[,][ ][a-z]+[ ] ;
PROTOCOL: [A-Z]+ ;
Z: [(][A-Z]+[,][A-Z]+[)][,];
W: [,][ ][A-Z]+[ ][(] ;
V: [)];
P: [,][ ][a-z]+[ ][0-9]+ ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines, \r (Windows)
Купите книгу. Он отвечает на ваш вопрос подробно, плюс намного больше. «Окончательный ANTLR 4 Reference» в пар. –