From 0c4a6edae95b3ffc76cb82604a3d1694d42625bb Mon Sep 17 00:00:00 2001 From: "Christopher L. Conway" Date: Tue, 27 Apr 2010 20:44:47 +0000 Subject: Adding Integer and Rational constants to SMT --- src/parser/antlr_input.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/parser/antlr_input.cpp') diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp index b8caf5ded..47420a015 100644 --- a/src/parser/antlr_input.cpp +++ b/src/parser/antlr_input.cpp @@ -91,6 +91,16 @@ pANTLR3_COMMON_TOKEN_STREAM AntlrInput::getTokenStream() { return d_tokenStream; } +void AntlrInput::lexerError(pANTLR3_BASE_RECOGNIZER recognizer) { + pANTLR3_LEXER lexer = (pANTLR3_LEXER)(recognizer->super); + AlwaysAssert(lexer!=NULL); + ParserState *parserState = (ParserState*)(lexer->super); + AlwaysAssert(parserState!=NULL); + + // Call the error display routine + parserState->parseError("Error finding next token."); +} + void AntlrInput::parseError(const std::string& message) throw (ParserException) { Debug("parser") << "Throwing exception: " @@ -125,6 +135,11 @@ void AntlrInput::setLexer(pANTLR3_LEXER pLexer) { } d_tokenStream = buffer->commonTstream; + + // ANTLR isn't using super, AFAICT. + d_lexer->super = getParserState(); + // Override default lexer error reporting + d_lexer->rec->reportError = &lexerError; } void AntlrInput::setParser(pANTLR3_PARSER pParser) { -- cgit v1.2.3