antlrworks 오류 문법 컴파일 문법 :“구문 오류 : 유효하지 않은 문자 문자 : 무효”

StackOverflow https://stackoverflow.com/questions/1872751

문제

나는 문법에 대한 스터브를 썼습니다 (지금까지 댓글과 일치). 오류가 발생합니다.

구문 오류 : 유효하지 않은 숯 문자 :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'
    ;

?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top