📄 mjscanner.java~
字号:
while (true) { if (zzCurrentPosL < zzEndReadL) zzInput = zzBufferL[zzCurrentPosL++]; else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; } else { // store back cached positions zzCurrentPos = zzCurrentPosL; zzMarkedPos = zzMarkedPosL; boolean eof = zzRefill(); // get translated positions and possibly new buffer zzCurrentPosL = zzCurrentPos; zzMarkedPosL = zzMarkedPos; zzBufferL = zzBuffer; zzEndReadL = zzEndRead; if (eof) { zzInput = YYEOF; break zzForAction; } else { zzInput = zzBufferL[zzCurrentPosL++]; } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; if (zzNext == -1) break zzForAction; zzState = zzNext; int zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; if ( (zzAttributes & 8) == 8 ) break zzForAction; } } } // store back cached position zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 2: { /* ignore */ } case 54: break; case 29: { return symbol(MJSymbol.MODEQ); } case 55: break; case 52: { return symbol(MJSymbol.BOOLEAN); } case 56: break; case 19: { return symbol(MJSymbol.EQ); } case 57: break; case 34: { return symbol(MJSymbol.GTEQ); } case 58: break; case 10: { return symbol(MJSymbol.LBRACE); } case 59: break; case 39: { return symbol(MJSymbol.NEW); } case 60: break; case 49: { return symbol(MJSymbol.RETURN); } case 61: break; case 15: { return symbol(MJSymbol.PLUS); } case 62: break; case 37: { return symbol(MJSymbol.LSHIFT); } case 63: break; case 48: { return symbol(MJSymbol.WHILE); } case 64: break; case 14: { return symbol(MJSymbol.DOT); } case 65: break; case 46: { return symbol(MJSymbol.VOID); } case 66: break; case 28: { return symbol(MJSymbol.MULTEQ); } case 67: break; case 27: { return symbol(MJSymbol.MINUSEQ); } case 68: break; case 45: { return symbol(MJSymbol.ELSE); } case 69: break; case 6: { return symbol(MJSymbol.LBRACK); } case 70: break; case 51: { return symbol(MJSymbol.STATIC); } case 71: break; case 17: { return symbol(MJSymbol.MULT); } case 72: break; case 23: { return symbol(MJSymbol.STRING_LITERAL, new String(yytext())); } case 73: break; case 8: { return symbol(MJSymbol.LPAREN); } case 74: break; case 26: { return symbol(MJSymbol.PLUSEQ); } case 75: break; case 43: { return symbol(MJSymbol.THIS); } case 76: break; case 16: { return symbol(MJSymbol.MINUS); } case 77: break; case 21: { return symbol(MJSymbol.GT); } case 78: break; case 38: { return symbol(MJSymbol.INT); } case 79: break; case 11: { return symbol(MJSymbol.RBRACE); } case 80: break; case 22: { return symbol(MJSymbol.LT); } case 81: break; case 42: { return symbol(MJSymbol.BOOLEAN_LITERAL,new Boolean(yytext())); } case 82: break; case 41: { return symbol(MJSymbol.LSHIFTEQ); } case 83: break; case 20: { return symbol(MJSymbol.NOT); } case 84: break; case 53: { return symbol(MJSymbol.EXTENDS); } case 85: break; case 12: { return symbol(MJSymbol.SEMICOLON); } case 86: break; case 3: { return symbol(MJSymbol.DIV); } case 87: break; case 31: { return symbol(MJSymbol.NOTEQ); } case 88: break; case 36: { return symbol(MJSymbol.LTEQ); } case 89: break; case 13: { return symbol(MJSymbol.COMMA); } case 90: break; case 32: { return symbol(MJSymbol.ANDAND); } case 91: break; case 18: { return symbol(MJSymbol.MOD); } case 92: break; case 33: { return symbol(MJSymbol.OROR); } case 93: break; case 4: { return symbol(MJSymbol.IDENTIFIER, yytext()); } case 94: break; case 35: { return symbol(MJSymbol.RSHIFT); } case 95: break; case 50: { return symbol(MJSymbol.STRING); } case 96: break; case 47: { return symbol(MJSymbol.CLASS); } case 97: break; case 1: { throw new RuntimeException("Illegal character \""+yytext()+
"\" at line "+yyline+", column "+yycolumn); } case 98: break; case 40: { return symbol(MJSymbol.RSHIFTEQ); } case 99: break; case 44: { return symbol(MJSymbol.NULL); } case 100: break; case 30: { return symbol(MJSymbol.EQEQ); } case 101: break; case 7: { return symbol(MJSymbol.RBRACK); } case 102: break; case 9: { return symbol(MJSymbol.RPAREN); } case 103: break; case 5: { return symbol(MJSymbol.INTEGER_LITERAL ,new Integer(yytext())); } case 104: break; case 25: { return symbol(MJSymbol.IF); } case 105: break; case 24: { return symbol(MJSymbol.DIVEQ); } case 106: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; zzDoEOF(); switch (zzLexicalState) { case YYINITIAL: { return symbol(MJSymbol.EOF); } case 113: break; default: { return new java_cup.runtime.Symbol(MJSymbol.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 MJSymbol * * This code was contributed by Karl Meissner <meissnersd@yahoo.com> */ private String getTokenName(int token) { try { java.lang.reflect.Field [] classFields = MJSymbol.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 MJScanner <inputfile>"); } else { for (int i = 0; i < argv.length; i++) { MJScanner scanner = null; try { scanner = new MJScanner( 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 + -