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

📄 lex.java

📁 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                            ungetc(c);                            return IntConstant;                        }                    }                }            }        value = c - '0';        while ('0' <= c2 && c2 <= '9') {            value = value * 10 + c2 - '0';            c2 = getc();        }        token.longValue = value;        if (c2 == 'F' || c2 == 'f') {            token.doubleValue = (double)value;            return FloatConstant;        }        else if (c2 == 'E' || c2 == 'e'                 || c2 == 'D' || c2 == 'd' || c2 == '.') {            StringBuffer tbuf = textBuffer;            tbuf.setLength(0);            tbuf.append(value);            return readDouble(tbuf, c2, token);        }        else if (c2 == 'L' || c2 == 'l')            return LongConstant;        else {            ungetc(c2);            return IntConstant;        }    }    private int readDouble(StringBuffer sbuf, int c, Token token) {        if (c != 'E' && c != 'e' && c != 'D' && c != 'd') {            sbuf.append((char)c);            for (;;) {                c = getc();                if ('0' <= c && c <= '9')                    sbuf.append((char)c);                else                    break;            }        }        if (c == 'E' || c == 'e') {            sbuf.append((char)c);            c = getc();            if (c == '+' || c == '-') {                sbuf.append((char)c);                c = getc();            }            while ('0' <= c && c <= '9') {                sbuf.append((char)c);                c = getc();            }        }        try {            token.doubleValue = Double.parseDouble(sbuf.toString());        }        catch (NumberFormatException e) {            return BadToken;        }        if (c == 'F' || c == 'f')            return FloatConstant;        else {            if (c != 'D' && c != 'd')                ungetc(c);            return DoubleConstant;        }    }    // !"#$%&'(    )*+,-./0    12345678    9:;<=>?    private static final int[] equalOps        =  { NEQ, 0, 0, 0, MOD_E, AND_E, 0, 0,             0, MUL_E, PLUS_E, 0, MINUS_E, 0, DIV_E, 0,             0, 0, 0, 0, 0, 0, 0, 0,             0, 0, 0, LE, EQ, GE, 0 };    private int readSeparator(int c) {        int c2, c3;        if ('!' <= c && c <= '?') {            int t = equalOps[c - '!'];            if (t == 0)                 return c;            else {                c2 = getc();                if (c == c2)                    switch (c) {                    case '=' :                        return EQ;                    case '+' :                        return PLUSPLUS;                    case '-' :                        return MINUSMINUS;                    case '&' :                        return ANDAND;                    case '<' :                        c3 = getc();                        if (c3 == '=')                            return LSHIFT_E;                        else {                            ungetc(c3);                            return LSHIFT;                        }                    case '>' :                        c3 = getc();                        if (c3 == '=')                            return RSHIFT_E;                        else if (c3 == '>') {                            c3 = getc();                            if (c3 == '=')                                return ARSHIFT_E;                            else {                                ungetc(c3);                                return ARSHIFT;                            }                        }                        else {                            ungetc(c3);                            return RSHIFT;                        }                    default :                        break;                    }                else if (c2 == '=')                    return t;            }        }        else if (c == '^') {            c2 = getc();            if (c2 == '=')                return EXOR_E;        }        else if (c == '|') {            c2 = getc();            if (c2 == '=')                return OR_E;            else if (c2 == '|')                return OROR;        }        else            return c;        ungetc(c2);        return c;    }    private int readIdentifier(int c, Token token) {        StringBuffer tbuf = textBuffer;        tbuf.setLength(0);        do {            tbuf.append((char)c);            c = getc();        } while (Character.isJavaIdentifierPart((char)c));        ungetc(c);        String name = tbuf.toString();        int t = ktable.lookup(name);        if (t >= 0)            return t;        else {            /* tbuf.toString() is executed quickly since it does not             * need memory copy.  Using a hand-written extensible             * byte-array class instead of StringBuffer is not a good idea             * for execution speed.  Converting a byte array to a String             * object is very slow.  Using an extensible char array             * might be OK.             */            token.textValue = name;            return Identifier;        }    }    private static final KeywordTable ktable = new KeywordTable();    static {        ktable.append("abstract", ABSTRACT);        ktable.append("boolean", BOOLEAN);        ktable.append("break", BREAK);        ktable.append("byte", BYTE);        ktable.append("case", CASE);        ktable.append("catch", CATCH);        ktable.append("char", CHAR);        ktable.append("class", CLASS);        ktable.append("const", CONST);        ktable.append("continue", CONTINUE);        ktable.append("default", DEFAULT);        ktable.append("do", DO);        ktable.append("double", DOUBLE);        ktable.append("else", ELSE);        ktable.append("extends", EXTENDS);        ktable.append("false", FALSE);        ktable.append("final", FINAL);        ktable.append("finally", FINALLY);        ktable.append("float", FLOAT);        ktable.append("for", FOR);        ktable.append("goto", GOTO);        ktable.append("if", IF);        ktable.append("implements", IMPLEMENTS);        ktable.append("import", IMPORT);        ktable.append("instanceof", INSTANCEOF);        ktable.append("int", INT);        ktable.append("interface", INTERFACE);        ktable.append("long", LONG);        ktable.append("native", NATIVE);        ktable.append("new", NEW);        ktable.append("null", NULL);        ktable.append("package", PACKAGE);        ktable.append("private", PRIVATE);        ktable.append("protected", PROTECTED);        ktable.append("public", PUBLIC);        ktable.append("return", RETURN);        ktable.append("short", SHORT);        ktable.append("static", STATIC);        ktable.append("strictfp", STRICT);        ktable.append("super", SUPER);        ktable.append("switch", SWITCH);        ktable.append("synchronized", SYNCHRONIZED);        ktable.append("this", THIS);        ktable.append("throw", THROW);        ktable.append("throws", THROWS);        ktable.append("transient", TRANSIENT);        ktable.append("true", TRUE);        ktable.append("try", TRY);        ktable.append("void", VOID);        ktable.append("volatile", VOLATILE);        ktable.append("while", WHILE);    }    private static boolean isBlank(int c) {        return c == ' ' || c == '\t' || c == '\f' || c == '\r'            || c == '\n';    }    private static boolean isDigit(int c) {        return '0' <= c && c <= '9';    }    private void ungetc(int c) {        lastChar = c;    }    public String getTextAround() {        int begin = position - 10;        if (begin < 0)            begin = 0;        int end = position + 10;        if (end > maxlen)            end = maxlen;        return input.substring(begin, end);    }    private int getc() {        if (lastChar < 0)            if (position < maxlen)                return input.charAt(position++);            else                return -1;        else {            int c = lastChar;            lastChar = -1;            return c;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -