⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjscanner.java~

📁 SkipOOMiniJOOL教学语言的编译器前端
💻 JAVA~
📖 第 1 页 / 共 3 页
字号:
        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 + -