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

📄 scanner.java

📁 非常好的编译源代码 将一个l语言转换为中间代码 java版本
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        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 + -