Necesito una pequeña guía para escribir una gramática para analizar el archivo de registro del juego Aion. Decidí usar Antlr3 (porque parece ser una herramienta que puede hacer el trabajo y pensé que era bueno para mí aprender a usarlo). Sin embargo, me he encontrado con problemas porque el archivo de registro no está exactamente estructurado.Ayuda con el análisis de un archivo de registro (ANTLR3)
El archivo de registro que necesito para analizar miradas como la siguiente:
2010.04.27 22:32:22 : You changed the connection status to Online.
2010.04.27 22:32:22 : You changed the group to the Solo state.
2010.04.27 22:32:22 : You changed the group to the Solo state.
2010.04.27 22:32:28 : Legion Message: www.xxxxxxxx.com (forum)
ventrillo: 19x.xxx.xxx.xxx
Port: 3712
Pass: xxxx (blabla)
4/27/2010 7:47 PM
2010.04.27 22:32:28 : You have item(s) left to settle in the sales agency window.
Como se puede ver, la mayoría de las líneas de empezar con una marca de tiempo, pero hay excepciones. Lo que me gustaría hacer en Antlr3 es escribir un analizador sintáctico que usa solo las líneas que comienzan con la marca de tiempo y descarta silenciosamente a las demás.
Esto es lo que he escrito hasta ahora (soy un principiante con estas cosas así que por favor no se rían: D)
grammar Antlr;
options {
language = Java;
}
logfile: line* EOF;
line : dataline | textline;
dataline: timestamp WS ':' WS text NL ;
textline: ~DIG text NL;
timestamp: four_dig '.' two_dig '.' two_dig WS two_dig ':' two_dig ':' two_dig ;
four_dig: DIG DIG DIG DIG;
two_dig: DIG DIG;
text: ~NL+;
/* Whitespace */
WS: (' ' | '\t')+;
/* New line goes to \r\n or EOF */
NL: '\r'? '\n' ;
/* Digits */
DIG : '0'..'9';
Así que lo que necesito es un ejemplo de cómo analizar esta sin generar errores para líneas sin la marca de tiempo.
Gracias!
Esto parece funcionar bastante bien y es simple y claro. Por supuesto, voy a cambiar algunas cosas para hacer lo que sea que necesite ... ¡Gracias! – Unknown
@ user188106, de nada. –