2013-01-24 3 views
4

ANTLR에 n00b이고 ANTLR4에서 실행중인 ASN.1 파서를 얻으려고 시도하여 커졌습니다. 나는 현재 입력 파일을 grun에 전달하고 "line 1 : 12029 입력에서 실용적인 대안이 없음 ..."과 같은 오류를보고있는 단계에 있습니다.ANTLR4 문법 디버깅

나는이 문제를 다시 어떤 문제와 관련 짓기 위해 노력하고 있습니다. 내 규칙과 함께하지만 문자 수에 의한 잘못된 입력을 찾는 것은 어려운 일입니다. ANTLR 파서가 입력을 한 줄로 보는 것이 정상입니까 아니면 규칙 문제로 인해 EOL을 인식하지 못합니까? (OSX 시스템에 있습니다)? 입력을 하나의 긴 줄로 보는 것이 정상적인 경우 누군가 파일에서 주어진 문자 위치를 찾기위한 도구를 권장 할 수 있습니까?

답변

3

코드에 \r 줄 끝만 사용합니까? ANTLR 4는 라인 수를 증가시키고 \n 문자가 소비 될 때만 char 위치를 재설정합니다. 일반 \r 줄 끝을 처리해야하는 경우이 확인을 수행하려면 LexerATNSimulator.consume을 무시해야합니다. 행 끝의 전체 집합에 대한 확인

혼자 \n 검사에 비해 훨씬 더 비싼, 그래서 \r 줄 끝에 드문 때문에 기본 구현은 최대 성능을 \n를 사용합니다.

+0

고마워요! 다시 차단 해제되었습니다. 내가 묻기 전에 입력 파일에서 줄 종결자를 변환하려고 시도 했어야했다. – kerlyn