2013-02-28 2 views
2

내가 uFFFF을 \ 할 수있는 범위 \의 u0000의 모든 문자와 일치하고 싶은, 다음 코드는 충분하지 않습니다 :ANTLR4의 모든 문자를 어떻게 일치시킬 수 있습니까?

grammar CharacterClass; 

start :  CH* EOF; 
CH  :  [\u0000-\uFFFF]; 

편집 :

내가 삽입을 원하기 때문에 내가 부탁 해요 구조와 같은 XML 이진 데이터 :

<binary:key>uhihahdudi some binary data, that should be ignored by ANTLR 
izgizgio</binary:key> 

이 범위에 자신을 제한 할 수 있는지 [\ u0000- \ u00FF] 내되는 InputStream은 처리 된 데이터의 바이트 값을 출력하고, 그러나 내 실제 텍스트 데이터를 사용하려면 추가 논리를 구현해야합니다.

나에게 가장 좋은 해결책은 ANTLR이 이진 파트를 어떻게 든 스킵하기 때문에 텍스트 데이터를 처리 할 수 ​​있기 때문입니다 (이 파트의 시작과 끝 위치 만 필요합니다).

답변

3

ANTLR 4는 [\u0000-\uFFFE]과 일치 할 수 있습니다. 가능한 모든 입력을 정확히 일치시켜야한다면 [\u0000-\u00FF]과 일치해야하며 입력을 UTF-16 문자 대신 바이트로 파서에 공급해야합니다.

편집 : 또한 Lexer.MIN_CHAR_VALUE and Lexer.MAX_CHAR_VALUE 상수를 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 당신의 솔루션은 좋은 생각이지만, 내가 선호하는 솔루션은 아닙니다. 제 질문을 다시 보시고 제 문제에 대해 더 자세히 설명해 주셨습니다. (나는 바이너리 데이터를 처리하고 싶지 않지만 구조체와 같은 XML에 삽입하고 싶다. ANTLR을 사용하면이 바이너리 부분을 건너 뛸 필요가있다.) – user1861174

관련 문제