Обработка синтаксических ошибок Antlr или как дать лучшее сообщение о неожиданном токене

У нас есть следующая под-часть грамматики Antlr:

signed_int
        : SIGN? INT
    ;

INT : '0'..'9'+
        ;

Когда кто-то вводит числовое значение, все в порядке, но если они по ошибке введите что-то вроде 10 (один и заглавную о )мы получим загадочный сообщение об ошибке типа:

error 1 : Missing token  at offset 14
near [Index: 0 (Start: 0-Stop: 0) ='<missing COLON>'     type<24> Line: 26 LinePos:14]
 : syntax error...

Как лучше всего справиться с ошибкой такого типа? я думал о определение catch -всех типов токенов SYMBOL, но это приводит к слишком большому количеству ошибки построения парсера. Я продолжу изучение обработки ошибок Antlr, но я думал, что опубликую это здесь, чтобы найти некоторые идеи.

5
задан Burton Samograd 1 May 2012 в 15:17
поделиться