을 입력ANTLR 오류가 나는 즉시 내가 처음 따옴표 (")를 입력 할 때 오류가 내 ANTLR 정의 언어를 사용하여 내 자바 편집기에서 문자열을 입력 할 때 문자열
입력 :.
StatusString = ";
break;
오류 :
java.lang.IllegalStateException: Lexer [email protected]
returned null token but lexerInput.readLength()=21
lexer-state: null
tokenStartOffset=557, readOffset=578, lookaheadOffset=579
Chars: "";\n break;\n}\n\n" - these characters need to be tokenized.
Fix the lexer to not return null token in this state.
내가 때문에 난 내 이쁜 리터럴 내 문자열을 정의하는 방법이다 의심 mmer.
문법 정의
STRING_LITERAL
: '"' (EscapeSequence | ~('\\'|'"'))* '"' {setText(getText().substring(1, getText().length()-1));}
;
fragment
EscapeSequence
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| OctalEscape
;
내가 무슨 일이 일어나고 있는지 의심은 처음 견적을보고 즉시로 문자열을 추출하기 위해 노력하고 있다는 점이다. 이것은 렉서 (lexer)를 사용하여 구문을 코딩하는 IDE이기 때문에 실시간으로 수행됩니다. 이 오류를 방지하기 위해 문법을 사용할 수 있습니까?
편집 : 내가 생각한 것은 줄 끝까지 확인해야한다는 것입니다. IDE는 netbeans 또는 eclipse와 같이 사용자가 따옴표를 완성 할 때까지 오렌지색을 인용 부호에서 시작하여 색칠합니다. Im은 문법을 통해 문법을 통해 어휘 교환/파서에 반영되도록하는 방법을 모르겠습니다.
내가 생각한 것은 줄 끝까지 확인해야했습니다. IDE는 netbeans 또는 eclipse처럼 견적이 완료 될 때까지 견적에서 시작하는 오렌지 색을 색칠합니다. Im은 문법을 통해이 점에 대해 어떻게 확신 할 수 없으므로 렉서/파서 – merjr
@merjr에 다시 반영됩니다. 다시 말해 문법에서는 아니지만 IDE에서는 어떤 방식 으로든이 작업을 수행합니다. –
적어도 문자열 리터럴 선언이 정확합니까? 오류는 기술적으로 다른 "코드에서 찾을 수 있기 때문에 나를 던지고있다. 그래서이 한 인스턴스에 실제로 문자열을 완료하지만 그 오류가 여전히 생성됩니다. – merjr