KDevelop API Documentation

lib/antlr/src/MismatchedTokenException.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: MismatchedTokenException.cpp,v 1.2 2003/05/02 00:36:20 okellogg Exp $ 00006 */ 00007 00008 #include "antlr/MismatchedTokenException.hpp" 00009 #include "antlr/String.hpp" 00010 00011 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 00012 namespace antlr { 00013 #endif 00014 00015 MismatchedTokenException::MismatchedTokenException() 00016 : RecognitionException("Mismatched Token: expecting any AST node","<AST>",-1,-1) 00017 , token(0) 00018 , node(nullASTptr) 00019 , tokenNames(0) 00020 , numTokens(0) 00021 { 00022 } 00023 00024 // Expected range / not range 00025 MismatchedTokenException::MismatchedTokenException( 00026 const char* const* tokenNames_, 00027 const int numTokens_, 00028 RefAST node_, 00029 int lower, 00030 int upper_, 00031 bool matchNot 00032 ) : RecognitionException("Mismatched Token","<AST>",-1,-1) 00033 , token(0) 00034 , node(node_) 00035 , tokenText( (node_ ? node_->toString(): ANTLR_USE_NAMESPACE(std)string("<empty tree>")) ) 00036 , mismatchType(matchNot ? NOT_RANGE : RANGE) 00037 , expecting(lower) 00038 , upper(upper_) 00039 , tokenNames(tokenNames_) 00040 , numTokens(numTokens_) 00041 { 00042 } 00043 00044 // Expected token / not token 00045 MismatchedTokenException::MismatchedTokenException( 00046 const char* const* tokenNames_, 00047 const int numTokens_, 00048 RefAST node_, 00049 int expecting_, 00050 bool matchNot 00051 ) : RecognitionException("Mismatched Token","<AST>",-1,-1) 00052 , token(0) 00053 , node(node_) 00054 , tokenText( (node_ ? node_->toString(): ANTLR_USE_NAMESPACE(std)string("<empty tree>")) ) 00055 , mismatchType(matchNot ? NOT_TOKEN : TOKEN) 00056 , expecting(expecting_) 00057 , tokenNames(tokenNames_) 00058 , numTokens(numTokens_) 00059 { 00060 } 00061 00062 // Expected BitSet / not BitSet 00063 MismatchedTokenException::MismatchedTokenException( 00064 const char* const* tokenNames_, 00065 const int numTokens_, 00066 RefAST node_, 00067 BitSet set_, 00068 bool matchNot 00069 ) : RecognitionException("Mismatched Token","<AST>",-1,-1) 00070 , token(0) 00071 , node(node_) 00072 , tokenText( (node_ ? node_->toString(): ANTLR_USE_NAMESPACE(std)string("<empty tree>")) ) 00073 , mismatchType(matchNot ? NOT_SET : SET) 00074 , set(set_) 00075 , tokenNames(tokenNames_) 00076 , numTokens(numTokens_) 00077 { 00078 } 00079 00080 // Expected range / not range 00081 MismatchedTokenException::MismatchedTokenException( 00082 const char* const* tokenNames_, 00083 const int numTokens_, 00084 RefToken token_, 00085 int lower, 00086 int upper_, 00087 bool matchNot, 00088 const ANTLR_USE_NAMESPACE(std)string& fileName_ 00089 ) : RecognitionException("Mismatched Token",fileName_,token_->getLine(),token_->getColumn()) 00090 , token(token_) 00091 , node(nullASTptr) 00092 , tokenText(token_->getText()) 00093 , mismatchType(matchNot ? NOT_RANGE : RANGE) 00094 , expecting(lower) 00095 , upper(upper_) 00096 , tokenNames(tokenNames_) 00097 , numTokens(numTokens_) 00098 { 00099 } 00100 00101 // Expected token / not token 00102 MismatchedTokenException::MismatchedTokenException( 00103 const char* const* tokenNames_, 00104 const int numTokens_, 00105 RefToken token_, 00106 int expecting_, 00107 bool matchNot, 00108 const ANTLR_USE_NAMESPACE(std)string& fileName_ 00109 ) : RecognitionException("Mismatched Token",fileName_,token_->getLine(),token_->getColumn()) 00110 , token(token_) 00111 , node(nullASTptr) 00112 , tokenText(token_->getText()) 00113 , mismatchType(matchNot ? NOT_TOKEN : TOKEN) 00114 , expecting(expecting_) 00115 , tokenNames(tokenNames_) 00116 , numTokens(numTokens_) 00117 { 00118 } 00119 00120 // Expected BitSet / not BitSet 00121 MismatchedTokenException::MismatchedTokenException( 00122 const char* const* tokenNames_, 00123 const int numTokens_, 00124 RefToken token_, 00125 BitSet set_, 00126 bool matchNot, 00127 const ANTLR_USE_NAMESPACE(std)string& fileName_ 00128 ) : RecognitionException("Mismatched Token",fileName_,token_->getLine(),token_->getColumn()) 00129 , token(token_) 00130 , node(nullASTptr) 00131 , tokenText(token_->getText()) 00132 , mismatchType(matchNot ? NOT_SET : SET) 00133 , set(set_) 00134 , tokenNames(tokenNames_) 00135 , numTokens(numTokens_) 00136 { 00137 } 00138 00139 ANTLR_USE_NAMESPACE(std)string MismatchedTokenException::getMessage() const 00140 { 00141 ANTLR_USE_NAMESPACE(std)string s; 00142 switch (mismatchType) { 00143 case TOKEN: 00144 s += "expecting " + tokenName(expecting) + ", found '" + tokenText + "'"; 00145 break; 00146 case NOT_TOKEN: 00147 s += "expecting anything but " + tokenName(expecting) + "; got it anyway"; 00148 break; 00149 case RANGE: 00150 s += "expecting token in range: " + tokenName(expecting) + ".." + tokenName(upper) + ", found '" + tokenText + "'"; 00151 break; 00152 case NOT_RANGE: 00153 s += "expecting token NOT in range: " + tokenName(expecting) + ".." + tokenName(upper) + ", found '" + tokenText + "'"; 00154 break; 00155 case SET: 00156 case NOT_SET: 00157 { 00158 s += ANTLR_USE_NAMESPACE(std)string("expecting ") + (mismatchType == NOT_SET ? "NOT " : "") + "one of ("; 00159 ANTLR_USE_NAMESPACE(std)vector<unsigned int> elems = set.toArray(); 00160 for ( unsigned int i = 0; i < elems.size(); i++ ) 00161 { 00162 s += " "; 00163 s += tokenName(elems[i]); 00164 } 00165 s += "), found '" + tokenText + "'"; 00166 } 00167 break; 00168 default: 00169 s = RecognitionException::getMessage(); 00170 break; 00171 } 00172 return s; 00173 } 00174 00175 ANTLR_USE_NAMESPACE(std)string MismatchedTokenException::tokenName(int tokenType) const 00176 { 00177 if (tokenType == Token::INVALID_TYPE) 00178 return "<Set of tokens>"; 00179 else if (tokenType < 0 || tokenType >= numTokens) 00180 return ANTLR_USE_NAMESPACE(std)string("<") + tokenType + ">"; 00181 else 00182 return tokenNames[tokenType]; 00183 } 00184 00185 #ifndef NO_STATIC_CONSTS 00186 const int MismatchedTokenException::TOKEN; 00187 const int MismatchedTokenException::NOT_TOKEN; 00188 const int MismatchedTokenException::RANGE; 00189 const int MismatchedTokenException::NOT_RANGE; 00190 const int MismatchedTokenException::SET; 00191 const int MismatchedTokenException::NOT_SET; 00192 #endif 00193 00194 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 00195 } 00196 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:47 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003