mismatchedcharexception.java
来自「SRI international 发布的OAA框架软件」· Java 代码 · 共 133 行
JAVA
133 行
package antlr_oaa;
/* ANTLR Translator Generator
* Project led by Terence Parr at http://www.jGuru.com
* Software rights: http://www.antlr.org/RIGHTS.html
*
* $Id: MismatchedCharException.java,v 1.1 2002/11/08 17:37:52 agno Exp $
*/
import antlr_oaa.collections.impl.BitSet;
public class MismatchedCharException extends RecognitionException {
// Types of chars
public static final int CHAR = 1;
public static final int NOT_CHAR = 2;
public static final int RANGE = 3;
public static final int NOT_RANGE = 4;
public static final int SET = 5;
public static final int NOT_SET = 6;
// One of the above
public int mismatchType;
// what was found on the input stream
public char foundChar;
// For CHAR/NOT_CHAR and RANGE/NOT_RANGE
public int expecting;
// For RANGE/NOT_RANGE (expecting is lower bound of range)
public int upper;
// For SET/NOT_SET
public BitSet set;
// who knows...they may want to ask scanner questions
public CharScanner scanner;
/**
* MismatchedCharException constructor comment.
*/
public MismatchedCharException() {
super("Mismatched char");
}
// Expected range / not range
public MismatchedCharException(char c, char lower, char upper_, boolean matchNot, CharScanner scanner) {
super("Mismatched char");
foundChar = c;
expecting = lower;
upper = upper_;
// get instantaneous values of file/line/column
this.line = scanner.getLine();
this.fileName = scanner.getFilename();
this.column = scanner.getColumn();
this.scanner = scanner;
mismatchType = matchNot ? NOT_RANGE : RANGE;
}
// Expected token / not token
public MismatchedCharException(char c, char expecting_, boolean matchNot, CharScanner scanner) {
super("Mismatched char");
foundChar = c;
expecting = expecting_;
// get instantaneous values of file/line/column
this.line = scanner.getLine();
this.fileName = scanner.getFilename();
this.column = scanner.getColumn();
this.scanner = scanner;
mismatchType = matchNot ? NOT_CHAR : CHAR;
}
// Expected BitSet / not BitSet
public MismatchedCharException(char c, BitSet set_, boolean matchNot, CharScanner scanner) {
super("Mismatched char");
foundChar = c;
set = set_;
// get instantaneous values of file/line/column
this.line = scanner.getLine();
this.fileName = scanner.getFilename();
this.column = scanner.getColumn();
this.scanner = scanner;
mismatchType = matchNot ? NOT_SET : SET;
}
/**
* MismatchedCharException constructor comment.
* @param s java.lang.String
*/
public MismatchedCharException(String s, int line) {
super(s);
}
/**
* Returns the error message that happened on the line/col given.
* Copied from toString().
*/
public String getMessage() {
StringBuffer sb = new StringBuffer();
switch (mismatchType) {
case CHAR :
sb.append("expecting '" + (char)expecting + "', found '" + (char)foundChar + "'");
break;
case NOT_CHAR :
sb.append("expecting anything but '" + (char)expecting + "'; got it anyway");
break;
case RANGE :
sb.append("expecting token in range: '" + (char)expecting + "'..'" + (char)upper + "', found '" + (char)foundChar + "'");
break;
case NOT_RANGE :
sb.append("expecting token NOT in range: " + (char)expecting + "'..'" + (char)upper + "', found '" + (char)foundChar + "'");
break;
case SET :
case NOT_SET :
sb.append("expecting " + (mismatchType == NOT_SET ? "NOT " : "") + "one of (");
int[] elems = set.toArray();
for (int i = 0; i < elems.length; i++) {
sb.append(" '");
sb.append((char)elems[i]);
sb.append("'");
}
sb.append("), found '" + (char)foundChar + "'");
break;
default :
sb.append(super.getMessage());
break;
}
return sb.toString();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?