OpenMD 3.0
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
MismatchedCharException.cpp
1/* ANTLR Translator Generator
2 * Project led by Terence Parr at http://www.jGuru.com
3 * Software rights: http://www.antlr.org/license.html
4 *
5 * $Id$
6 */
7
8#include "antlr/CharScanner.hpp"
9#include "antlr/MismatchedCharException.hpp"
10#include "antlr/String.hpp"
11
12#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
13namespace antlr {
14#endif
15
16MismatchedCharException::MismatchedCharException()
17 : RecognitionException("Mismatched char")
18{}
19
20// Expected range / not range
21MismatchedCharException::MismatchedCharException(
22 int c,
23 int lower,
24 int upper_,
25 bool matchNot,
26 CharScanner* scanner_
27) : RecognitionException("Mismatched char",
28 scanner_->getFilename(),
29 scanner_->getLine(), scanner_->getColumn())
30 , mismatchType(matchNot ? NOT_RANGE : RANGE)
31 , foundChar(c)
32 , expecting(lower)
33 , upper(upper_)
34 , scanner(scanner_)
35{
36}
37
38// Expected token / not token
39MismatchedCharException::MismatchedCharException(
40 int c,
41 int expecting_,
42 bool matchNot,
43 CharScanner* scanner_
44) : RecognitionException("Mismatched char",
45 scanner_->getFilename(),
46 scanner_->getLine(), scanner_->getColumn())
47 , mismatchType(matchNot ? NOT_CHAR : CHAR)
48 , foundChar(c)
49 , expecting(expecting_)
50 , scanner(scanner_)
51{
52}
53
54// Expected BitSet / not BitSet
55MismatchedCharException::MismatchedCharException(
56 int c,
57 BitSet set_,
58 bool matchNot,
59 CharScanner* scanner_
60) : RecognitionException("Mismatched char",
61 scanner_->getFilename(),
62 scanner_->getLine(), scanner_->getColumn())
63 , mismatchType(matchNot ? NOT_SET : SET)
64 , foundChar(c)
65 , set(set_)
66 , scanner(scanner_)
67{
68}
69
70ANTLR_USE_NAMESPACE(std)string MismatchedCharException::getMessage() const
71{
72 ANTLR_USE_NAMESPACE(std)string s;
73
74 switch (mismatchType) {
75 case CHAR :
76 s += "expecting '" + charName(expecting) + "', found '" + charName(foundChar) + "'";
77 break;
78 case NOT_CHAR :
79 s += "expecting anything but '" + charName(expecting) + "'; got it anyway";
80 break;
81 case RANGE :
82 s += "expecting token in range: '" + charName(expecting) + "'..'" + charName(upper) + "', found '" + charName(foundChar) + "'";
83 break;
84 case NOT_RANGE :
85 s += "expecting token NOT in range: " + charName(expecting) + "'..'" + charName(upper) + "', found '" + charName(foundChar) + "'";
86 break;
87 case SET :
88 case NOT_SET :
89 {
90 s += ANTLR_USE_NAMESPACE(std)string("expecting ") + (mismatchType == NOT_SET ? "NOT " : "") + "one of (";
91 ANTLR_USE_NAMESPACE(std)vector<unsigned int> elems = set.toArray();
92 for ( unsigned int i = 0; i < elems.size(); i++ )
93 {
94 s += " '";
95 s += charName(elems[i]);
96 s += "'";
97 }
98 s += "), found '" + charName(foundChar) + "'";
99 }
100 break;
101 default :
102 s += RecognitionException::getMessage();
103 break;
104 }
105
106 return s;
107}
108
109#ifndef NO_STATIC_CONSTS
110const int MismatchedCharException::CHAR;
111const int MismatchedCharException::NOT_CHAR;
112const int MismatchedCharException::RANGE;
113const int MismatchedCharException::NOT_RANGE;
114const int MismatchedCharException::SET;
115const int MismatchedCharException::NOT_SET;
116#endif
117
118#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
119}
120#endif