antlrworks 오류 문법 컴파일 문법 :“구문 오류 : 유효하지 않은 문자 문자 : 무효”
-
18-09-2019 - |
문제
나는 문법에 대한 스터브를 썼습니다 (지금까지 댓글과 일치). 오류가 발생합니다.
구문 오류 : 유효하지 않은 숯 문자 :u003CINVALID>
또한 다음 명령에 오류를 추적했습니다.
... ~LINE_ENDING* ...
LINE_ENDING : ( '\n' | '\r' | '\r\n');
누군가 내가 이것을 고치도록 도와 줄 수 있습니까?
해결책
그만큼 ~
연산자는 세트에만 적용 할 수 있습니다. Lexer에서 세트의 요소는 입력 스트림의 문자입니다. 다시 말해, 당신은 이것을 가질 수 있습니다.
~( 'a'..'z'
| 'C'
| '\r'
| '\n'
)
그러나 당신은 이것을 가질 수 없습니다 순서 (두 문자의) 대신 세트.
~('\r\n')
당신이 직면 한 문제는이 두 번째 사례의 확장입니다.
다른 팁
왜 그 오류가 발생하는지 잘 모르겠습니다 (현재 직접 테스트 할 수있는 수단이 없습니다). 아마도 당신이 단일 숯을 부정하고 있다는 사실은 아마도\r
또는 \n
) 또는 더블 숯 (\r\n
) 문제가 있습니까?
시도하면 어떻게됩니까 :
SingleLineComment
: '//' (~LineBreakChar)* (NewLine | EOF)
;
LineBreakChar
: '\r' | '\n'
;
NewLine
: '\r'? '\n' | '\r'
;
?
제휴하지 않습니다 StackOverflow