Estou usando o ANTLR para desenvolver uma DSL externa para um projeto da empresa onde trabalho, desenvolvi a gramática e já está funcionando direitinho, o problema é que quando eu uso de entrada uma string que não deveria ser reconhecida pela gramática, a classe gerada pelo ANTLR não dá erro nenhum de análise léxica e acaba dando NullPointer mais a frente durante o parser… Alguém sabe pq isso ocorre? Eu gostaria de lançar uma exceção de erro sintático e tratar essa excessão no sistema que está utilizando a DSL externa.
Faz muito tempo que usei ANTLR, e comecei a escrever uma gramática, porém tinha recursividade, e era muito difícil de tratar. Daí acabei partindo para um parser feito na mão mesmo.
Mas se eu não me engano, tinha um jeito de dar um pedaço de código para o ANTLR, na hora que ele ia processar sua gramática. Eu fiz uma vez para seguir um exemplo, porque como disse nem terminei o parser no ANTLR. Mas dá uma olhada e vê se isso ajuda: http://www.antlr.org/wiki/display/ANTLR3/Custom+Syntax+Error+Recovery
Daí você pode tratar o erro melhor, ver o status do parser e tal.