KDevelop API Documentation

MismatchedCharException.cpp

Go to the documentation of this file.
00001 /* ANTLR Translator Generator
00002  * Project led by Terence Parr at http://www.jGuru.com
00003  * Software rights: http://www.antlr.org/RIGHTS.html
00004  *
00005  * $Id: MismatchedCharException.cpp,v 1.2 2003/05/02 00:36:20 okellogg Exp $
00006  */
00007 
00008 #include "antlr/CharScanner.hpp"
00009 #include "antlr/MismatchedCharException.hpp"
00010 #include "antlr/String.hpp"
00011 
00012 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00013 namespace antlr {
00014 #endif
00015 
00016 MismatchedCharException::MismatchedCharException()
00017   : RecognitionException("Mismatched char")
00018 {}
00019 
00020 // Expected range / not range
00021 MismatchedCharException::MismatchedCharException(
00022     int c,
00023     int lower,
00024     int upper_,
00025     bool matchNot,
00026     CharScanner* scanner_
00027 ) : RecognitionException("Mismatched char",
00028                          scanner_->getFilename(),
00029                                  scanner_->getLine(), scanner_->getColumn())
00030   , mismatchType(matchNot ? NOT_RANGE : RANGE)
00031   , foundChar(c)
00032   , expecting(lower)
00033   , upper(upper_)
00034   , scanner(scanner_)
00035 {
00036 }
00037 
00038 // Expected token / not token
00039 MismatchedCharException::MismatchedCharException(
00040     int c,
00041     int expecting_,
00042     bool matchNot,
00043     CharScanner* scanner_
00044 ) : RecognitionException("Mismatched char",
00045                          scanner_->getFilename(),
00046                                  scanner_->getLine(), scanner_->getColumn())
00047   , mismatchType(matchNot ? NOT_CHAR : CHAR)
00048   , foundChar(c)
00049   , expecting(expecting_)
00050   , scanner(scanner_)
00051 {
00052 }
00053 
00054 // Expected BitSet / not BitSet
00055 MismatchedCharException::MismatchedCharException(
00056     int c,
00057     BitSet set_,
00058     bool matchNot,
00059     CharScanner* scanner_
00060 ) : RecognitionException("Mismatched char",
00061                          scanner_->getFilename(),
00062                                  scanner_->getLine(), scanner_->getColumn())
00063   , mismatchType(matchNot ? NOT_SET : SET)
00064   , foundChar(c)
00065   , set(set_)
00066   , scanner(scanner_)
00067 {
00068 }
00069 
00070 ANTLR_USE_NAMESPACE(std)string MismatchedCharException::getMessage() const
00071 {
00072     ANTLR_USE_NAMESPACE(std)string s;
00073 
00074     switch (mismatchType) {
00075     case CHAR :
00076         s += "expecting '" + charName(expecting) + "', found '" + charName(foundChar) + "'";
00077         break;
00078     case NOT_CHAR :
00079         s += "expecting anything but '" + charName(expecting) + "'; got it anyway";
00080         break;
00081     case RANGE :
00082         s += "expecting token in range: '" + charName(expecting) + "'..'" + charName(upper) + "', found '" + charName(foundChar) + "'";
00083         break;
00084     case NOT_RANGE :
00085         s += "expecting token NOT in range: " + charName(expecting) + "'..'" + charName(upper) + "', found '" + charName(foundChar) + "'";
00086         break;
00087     case SET :
00088     case NOT_SET :
00089         {
00090             s += ANTLR_USE_NAMESPACE(std)string("expecting ") + (mismatchType == NOT_SET ? "NOT " : "") + "one of (";
00091             ANTLR_USE_NAMESPACE(std)vector<unsigned int> elems = set.toArray();
00092             for ( unsigned int i = 0; i < elems.size(); i++ )
00093             {
00094                 s += " '";
00095                 s += charName(elems[i]);
00096                 s += "'";
00097             }
00098             s += "), found '" + charName(foundChar) + "'";
00099         }
00100         break;
00101     default :
00102         s += RecognitionException::getMessage();
00103         break;
00104     }
00105 
00106     return s;
00107 }
00108 
00109 #ifndef NO_STATIC_CONSTS
00110 const int MismatchedCharException::CHAR;
00111 const int MismatchedCharException::NOT_CHAR;
00112 const int MismatchedCharException::RANGE;
00113 const int MismatchedCharException::NOT_RANGE;
00114 const int MismatchedCharException::SET;
00115 const int MismatchedCharException::NOT_SET;
00116 #endif
00117 
00118 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00119 }
00120 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:50 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003