2013-06-12 5 views
0

ANTLRWorks를 사용하여 문법을 테스트하고 규칙 중 하나가 BULLET 기호 사용을 예측합니다. • 구문 분석 트리를 작성할 때마다 매번 이스케이프 처리됩니다. 나는 또한 확장 된 ASCII 테이블에서 다른 문자를 시도하고 생략되었습니다. 그것은 잘 알려진 버그입니까? 아니면 어떻게 확장 ASCII 문자를 사용해야합니까?ANTLR3이 확장 ASCII 문자와 일치하지 않습니다.

답변

1

ANTLR 3.x에서 4.0은 U + FFFF를 제외한 모든 UTF-16 코드 단위와 일치 할 수 있습니다. ANTLR 4.1은 U + FFFF와도 일치 할 수 있습니다. U + 10000에서 U + 10FFFF 범위의 문자를 일치 시키려면 문법에서 명시 적으로 UTF-16 서로 게이트 쌍으로 인코딩해야합니다.

+0

안녕하세요. 글 머리 기호 문자는 U + 10000에서 U + 10FFFF 범위에 속합니까? 유니 코드는 "\ u2022"입니다. 그렇다면 어떻게 UTF-16 서로 게이트 쌍으로 변환 할 수 있습니까? 어디서 볼 수 있니? –

+0

@IhorM. 아니요. ANTLR이 특별한 고려 사항없이 처리 할 수있는 문자 범위에 해당하는 문자입니다. 문법의 렉서 부분에서''\ u2022 ''를 사용하십시오. –

+0

이것은 내가 처음에 한 일입니다. ANTLRWorks에서 테스트했습니다. 입력 상자에 "x • y"를 넣고 Parse Tree에 NoViableAltException을 표시합니다. –