2014-09-28 2 views
0

약간의 질문이 있습니다 (전에 Google을 사용했습니다) : 따옴표를 제외한 모든 특수 유니 코드 문자를 일치시키는 방법이 있습니까?특수 문자 인식

STRING:  '"' (NUMBER|LETTER|' '|'!'|'?'|':'|'.'|'/'|'*')* '"'; 

fragment LETTER: ('a'..'z'|'A'..'Z'); 
fragment DIGIT: ('0'..'9'); 

더 효율적인 방법이 있나요 :

이 코드가?

의견에 감사드립니다.

+2

: 여기 ~[\r\n]*를 사용하여 문자 이외의 문자와 일치하는 ~를 사용하는 규칙은? – hobbs

답변

0

~["] 또는 이전 v3 스타일 ~'"'은 따옴표를 제외한 모든 문자와 일치합니다.

당신은 또한이 같은 줄 바꿈을 제외하고 싶은 경우

STRING : '"' ~["\r\n]* '"'; 

the official docs에서 :

~x

일치 하나의 문자하지 x에 의해 기술 세트를 . x 세트는 ~(’x’|’y’|’z’) 또는 ~[xyz]과 같은 단일 문자 리터럴, 범위 또는 하위 규칙 일 수 있습니다. 문자 "특별한"를 만드는 것

COMMENT : '#' ~[\r\n]* '\r'? '\n' -> skip ; 
+0

'print'Hello world! ''라고 입력하면 제대로 작동하지 않습니다. ''그 '1 : 6 토큰 인식 오류가 발생했습니다 :' "그는 ' 줄 1 : 18 토큰 인식 오류 :'! ' line 1:19 토큰 인식 오류 : ' "\ n"' – DrunkCoder

+0

@DrunkCoder, ANTLR3을 사용하고 있지 않습니까? v4를 사용하고 있다면 다른 규칙이 실패하는 원인이 될 것입니다.이 경우 전체 문법을 게시 할 수 있습니까? 공식 문서에 대한 링크도 참조하십시오. –