1
에 상황에 해당 오류 메시지를 출력하기 좀 소스 코드를 분석하는 문법이 있습니다누락 된 토큰
document
: header body_block* EOF
-> body_block*
;
header
: header_statement*
;
body_block
: '{' block_contents '}'
;
block_contents
: declaration_list
| ... other things ....
문서가 헤더없이 신체 또는 신체없이 헤더가하는 것은 합법입니다. 내가
int i;
과 같은 문서를 구문 분석하려고하면
는 ANTLR은 EOF
를 기다리고 있었다 때 int
를 발견 뿌려줍니다. 이것은 사실이지만, 나는 그것이 {
을 기대하고 있다고 말하고 싶습니다. 즉, 입력에 body_block
이 아닌 EOF와 헤더가있는 경우 사용자에게 body_block
안에 해당 텍스트를 묶어야한다고 제안하고 싶습니다.
나는 에 거의 개의 작업을 시도해 보았습니다. 조명이 켜지면 게시 할 수 있지만이 작업이 쉽지 않을 것으로 기대하고 있습니다.
이것은 완벽하게 작동했습니다 (내 시도보다 훨씬 더 예뻤습니다!). ANTLR이 두 가지 대안이 똑같은 것을 불평하지 않도록 구문 어법 ('('{') =>')을 추가했습니다. –