게임 Aion의 로그 파일을 구문 분석하기위한 문법을 작성하는 데 필요한 약간의 지침이 필요합니다. 나는 Antlr3을 사용하여 결정했습니다 (왜냐하면 그것은 일을 할 수있는 도구 인 것 같아서 그것을 사용하는 법을 배우는 것이 좋다고 생각했기 때문입니다). 그러나 로그 파일이 정확하게 구조화되지 않았기 때문에 문제가 발생했습니다.로그 파일 (ANTLR3) 구문 분석에 대한 도움말
나는 아래와 같은 모습을 구문 분석 할 필요가 로그 파일 : 당신이 볼 수 있듯이
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.
는 대부분의 라인은 타임 스탬프와 함께 시작하지만 예외가 있습니다. Antlr3에서 내가하고 싶은 것은 조용히 다른 것들을 버리는 동안 timestamp로 시작하는 라인만을 사용하는 파서를 작성하는 것입니다.
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';
그래서 내가 필요한 것은이 구문 분석하는 방법의 예입니다
이
내가 (D 내가 그렇게 웃지 마십시오 이러한 것들로 초보자 해요) 지금까지 작성한 것입니다 시간 소인이없는 행에 오류를 생성하지 않습니다.감사합니다.
이것은 꽤 잘 작동하는 것처럼 보입니다. 간단하고 명확합니다. Ofcouse, 내가 할 일이 무엇이든 바꿀거야 .. 고마워! – Unknown
@ user188106, 언제든지 환영합니다. –