2017-12-02 7 views
0

는 내가 같은 파서 규칙이 정의되어있다 : '.'텍스트가 문장 부호가 포함되어있는 경우antlr4 : 토큰 인식 오류 "." 점 및 기타 구두점

text: '"'.*?'"' ; 

그러나이도 실패한.

",;:!?./§/*-+)({}[]abc" 
line 1:1 token recognition error at: ',' 
line 1:2 token recognition error at: ';' 
line 1:4 token recognition error at: '!' 
line 1:5 token recognition error at: '?' 
line 1:6 token recognition error at: '.' 
line 1:7 token recognition error at: '/' 
line 1:8 token recognition error at: '§' 
line 1:9 token recognition error at: '/' 
line 1:10 token recognition error at: '*' 
line 1:11 token recognition error at: '-' 
line 1:12 token recognition error at: '+' 
line 1:13 token recognition error at: ')' 
line 1:14 token recognition error at: '(' 

이상한 점은 인식됩니다. 무엇이든지 도와 드릴까요?을 문자열의 일부로 사용 하시겠습니까? 당신은 text 필요

+0

아마도 문법에 다른 규칙을 사용하여 실수로 문자열을 사용하려고하면 문제가 발생합니다. 'curlies'는 힌트입니다. 토큰 스트림을 덤프 해보십시오. – GRosenberg

답변

1

이 같은 렉서 규칙으로 정의한다 :

TEXT: '"'.*?'"' ; 

하면 해석 규칙 ANTLR에 와일드 카드 연산자를 사용하는 대신 어떤 성격의 규칙과 일치됩니다.

+0

실제로 .. 잘 했어 – dgan

+0

각 구문 분석기 규칙마다 렉서 규칙을 항상 정의해야합니까? – dgan

+0

아니요 ... 렉서 규칙은 입력 문자를 토큰 화하기 위해 존재하며 파서 규칙은 특정 토큰을 그룹화하기 위해 있습니다. – Raven