Hi, a reminder that debugging tree grammars can be a bitch. I like to override
standard messaging to spew lots of stuff. E.g., i like this kind of thing:
ASTVerifier.g: node from after line 150:17 [grammarSpec, rules, rule,
altListAsBlock, altList, alternative, elements, element, ebnf, block, altList,
alternative] no viable alt; toke...@-1,0:0='ALT',<84>,0:-1] (decision=24 state
3) decision=<<>>
context=...DOWN BLOCK DOWN >>>ALT<<< DOWN DOC_COMMENT...
Here's my code:
public String getErrorMessage(RecognitionException e,
String[] tokenNames)
{
List stack = getRuleInvocationStack(e, this.getClass().getName());
String msg = null;
String inputContext =
((Tree)input.LT(-3)).getText()+" "+
((Tree)input.LT(-2)).getText()+" "+
((Tree)input.LT(-1)).getText()+" >>>"+
((Tree)input.LT(1)).getText()+"<<< "+
((Tree)input.LT(2)).getText()+" "+
((Tree)input.LT(3)).getText();
if ( e instanceof NoViableAltException ) {
NoViableAltException nvae = (NoViableAltException)e;
msg = " no viable alt; token="+e.token+
" (decision="+nvae.decisionNumber+
" state "+nvae.stateNumber+")"+
" decision=<<"+nvae.grammarDecisionDescription+">>";
}
else {
msg = super.getErrorMessage(e, tokenNames);
}
return stack+" "+msg+" context=..."+inputContext+"...";
}
public String getTokenErrorDisplay(Token t) {
return t.toString();
}
Ter
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.