protected virtual void ReportMessageAndThrowTemplateException(ITokenStream tokens, IToken templateToken, Parser parser, RecognitionException re)
{
if (re.Token.Type == TemplateLexer.EOF_TYPE)
{
string msg = "premature EOF";
ErrorManager.CompiletimeError(ErrorType.SYNTAX_ERROR, templateToken, re.Token, msg);
}
else if (re is NoViableAltException)
{
string msg = "'" + re.Token.Text + "' came as a complete surprise to me";
ErrorManager.CompiletimeError(ErrorType.SYNTAX_ERROR, templateToken, re.Token, msg);
}
else if (tokens.Index == 0)
{
// couldn't parse anything
string msg = string.Format("this doesn't look like a template: \"{0}\"", tokens);
ErrorManager.CompiletimeError(ErrorType.SYNTAX_ERROR, templateToken, re.Token, msg);
}
else if (tokens.LA(1) == TemplateLexer.LDELIM)
{
// couldn't parse expr
string msg = "doesn't look like an expression";
ErrorManager.CompiletimeError(ErrorType.SYNTAX_ERROR, templateToken, re.Token, msg);
}
else
{
string msg = parser.GetErrorMessage(re, parser.TokenNames);
ErrorManager.CompiletimeError(ErrorType.SYNTAX_ERROR, templateToken, re.Token, msg);
}
// we have reported the error, so just blast out
throw new TemplateException();
}