📄 scanner.java
字号:
case 48:
{ return symbol(ASSIGN);
}
case 158: break;
case 72:
{ return symbol(INTEGER_LITERAL, new Integer((int) parseLong(2, yylength(), 16)));
}
case 159: break;
case 99:
{ return symbol(GOTO);
}
case 160: break;
case 93:
{ return symbol(THEN);
}
case 161: break;
case 75:
{ return symbol(FOR);
}
case 162: break;
case 87:
{ return symbol(INTEGER_LITERAL, new Long(parseLong(2, yylength()-1, 16)));
}
case 163: break;
case 37:
{ return symbol(FLOATING_POINT_LITERAL, new Double(yytext()));
}
case 164: break;
case 34:
{ return symbol(DIVEQ);
}
case 165: break;
case 116:
{ return symbol(DEFAULT);
}
case 166: break;
case 24:
{ return symbol(QUESTION);
}
case 167: break;
case 3:
{ return symbol(DIV);
}
case 168: break;
case 98:
{ return symbol(CHAR);
}
case 169: break;
case 46:
{ return symbol(IF);
}
case 170: break;
case 43:
{ return symbol(TO);
}
case 171: break;
case 5:
{ return symbol(IDENTIFIER, yytext());
}
case 172: break;
case 60:
{ throw new RuntimeException("Illegal escape sequence \""+yytext()+"\"");
}
case 173: break;
case 58:
{ return symbol(XOREQ);
}
case 174: break;
case 113:
{ return symbol(SWITCH);
}
case 175: break;
case 77:
{ return symbol(LSHIFTEQ);
}
case 176: break;
case 29:
{ return symbol(MOD);
}
case 177: break;
case 11:
{ return symbol(LPAREN);
}
case 178: break;
case 65:
{ string.append( '\r' );
}
case 179: break;
case 53:
{ return symbol(LSHIFT);
}
case 180: break;
case 102:
{ return symbol(BREAK);
}
case 181: break;
case 23:
{ return symbol(COMP);
}
case 182: break;
case 67:
{ string.append( '\b' );
}
case 183: break;
case 82:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\r'));
}
case 184: break;
case 42:
{ return symbol(MINUSEQ);
}
case 185: break;
case 84:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\b'));
}
case 186: break;
case 38:
{ return symbol(INTEGER_LITERAL, new Long(yytext().substring(0,yylength()-1)));
}
case 187: break;
case 88:
{ return symbol(REAL);
}
case 188: break;
case 31:
{ throw new RuntimeException("Unterminated string at end of line");
}
case 189: break;
case 62:
{ string.append( '\"' );
}
case 190: break;
case 1:
{ throw new RuntimeException("Illegal character \""+yytext()+ "\" at line "+yyline+", column "+yycolumn);
}
case 191: break;
case 57:
{ return symbol(OREQ);
}
case 192: break;
case 36:
{ return symbol(INTEGER_LITERAL, new Integer((int) parseLong(0, yylength(), 8)));
}
case 193: break;
case 16:
{ return symbol(RBRACK);
}
case 194: break;
case 17:
{ return symbol(SEMICOLON);
}
case 195: break;
case 6:
{ return symbol(INTEGER_LITERAL, new Integer(yytext()));
}
case 196: break;
case 79:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\"'));
}
case 197: break;
case 117:
{ return symbol(INTEGER);
}
case 198: break;
case 63:
{ string.append( '\'' );
}
case 199: break;
case 110:
{ return symbol(FLOAT);
}
case 200: break;
case 64:
{ string.append( '\\' );
}
case 201: break;
case 107:
{ return symbol(WRITE);
}
case 202: break;
case 97:
{ return symbol(CASE);
}
case 203: break;
case 8:
{ return symbol(MINUS);
}
case 204: break;
case 80:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\''));
}
case 205: break;
case 7:
{ return symbol(DOT);
}
case 206: break;
case 81:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\\'));
}
case 207: break;
case 111:
{ return symbol(REPEAT);
}
case 208: break;
case 76:
{ return symbol(RSHIFTEQ);
}
case 209: break;
case 26:
{ return symbol(AND);
}
case 210: break;
case 20:
{ return symbol(COLON);
}
case 211: break;
case 51:
{ return symbol(LTEQ);
}
case 212: break;
case 101:
{ return symbol(ARRAY);
}
case 213: break;
case 78:
{ yybegin(YYINITIAL); int val = Integer.parseInt(yytext().substring(1,yylength()-1),8); return symbol(CHARACTER_LITERAL, new Character((char)val));
}
case 214: break;
case 69:
{ string.append( '\f' );
}
case 215: break;
case 100:
{ return symbol(VOID);
}
case 216: break;
case 74:
{ return symbol(NOT);
}
case 217: break;
case 32:
{ yybegin(YYINITIAL); return symbol(STRING_LITERAL, string.toString());
}
case 218: break;
case 14:
{ return symbol(RBRACE);
}
case 219: break;
case 86:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character('\f'));
}
case 220: break;
case 71:
{ return symbol(INTEGER_LITERAL, new Long(parseLong(0, yylength()-1, 8)));
}
case 221: break;
case 4:
{ return symbol(MULT);
}
case 222: break;
case 2:
{ /* ignore */
}
case 223: break;
case 89:
{ return symbol(READ);
}
case 224: break;
case 15:
{ return symbol(LBRACK);
}
case 225: break;
case 106:
{ return symbol(UNTIL);
}
case 226: break;
case 44:
{ return symbol(OROR);
}
case 227: break;
case 30:
{ string.append( yytext() );
}
case 228: break;
case 109:
{ return symbol(BOOLEAN_LITERAL, new Boolean(false));
}
case 229: break;
case 91:
{ return symbol(ANDAND);
}
case 230: break;
case 61:
{ char val = (char) Integer.parseInt(yytext().substring(1),8); string.append( val );
}
case 231: break;
case 108:
{ return symbol(WHILE);
}
case 232: break;
case 33:
{ throw new RuntimeException("Unterminated character literal at end of line");
}
case 233: break;
case 54:
{ return symbol(PLUSEQ);
}
case 234: break;
case 90:
{ return symbol(ELSE);
}
case 235: break;
case 70:
{ yybegin(YYINITIAL); return symbol(CHARACTER_LITERAL, new Character(yytext().charAt(0)));
}
case 236: break;
case 18:
{ return symbol(COMMA);
}
case 237: break;
case 112:
{ return symbol(RETURN);
}
case 238: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
zzDoEOF();
{
return symbol(EOF);
}
}
else {
zzScanError(ZZ_NO_MATCH);
}
}
}
}
/**
* Converts an int token code into the name of the
* token by reflection on the cup symbol class/interface sym
*
* This code was contributed by Karl Meissner <meissnersd@yahoo.com>
*/
private String getTokenName(int token) {
try {
java.lang.reflect.Field [] classFields = sym.class.getFields();
for (int i = 0; i < classFields.length; i++) {
if (classFields[i].getInt(null) == token) {
return classFields[i].getName();
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
return "UNKNOWN TOKEN";
}
/**
* Same as next_token but also prints the token to standard out
* for debugging.
*
* This code was contributed by Karl Meissner <meissnersd@yahoo.com>
*/
public java_cup.runtime.Symbol debug_next_token() throws java.io.IOException {
java_cup.runtime.Symbol s = next_token();
System.out.println( "line:" + (yyline+1) + " col:" + (yycolumn+1) + " --"+ yytext() + "--" + getTokenName(s.sym) + "--");
return s;
}
/**
* Runs the scanner on input files.
*
* This main method is the debugging routine for the scanner.
* It prints debugging information about each returned token to
* System.out until the end of file is reached, or an error occured.
*
* @param argv the command line, contains the filenames to run
* the scanner on.
*/
public static void main(String argv[]) {
if (argv.length == 0) {
System.out.println("Usage : java Scanner <inputfile>");
}
else {
for (int i = 0; i < argv.length; i++) {
Scanner scanner = null;
try {
scanner = new Scanner( new java.io.FileReader(argv[i]) );
while ( !scanner.zzAtEOF ) scanner.debug_next_token();
}
catch (java.io.FileNotFoundException e) {
System.out.println("File not found : \""+argv[i]+"\"");
}
catch (java.io.IOException e) {
System.out.println("IO error scanning file \""+argv[i]+"\"");
System.out.println(e);
}
catch (Exception e) {
System.out.println("Unexpected exception:");
e.printStackTrace();
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -