亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scanner.java

?? javac是sun公司開發人員使用java語言編寫的優秀的工業級java編譯器
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/** * @(#)Scanner.java	1.36 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.tools.javac.v8.parser;import java.io.*;import com.sun.tools.javac.v8.util.*;/** * The lexical analyzer maps an input stream consisting of *  ASCII characters and Unicode escapes into a token sequence. */public class Scanner implements Tokens, LayoutCharacters {    /**     * The token, set by nextToken().     */    int token;    /**     * The token's position. pos = line << Position.LINESHIFT + col.     *  Line and column numbers start at 1.     */    int pos;    /**     * The last character position of the token.     */    int endPos;    /**     * The last character position of the previous token.     */    int prevEndPos;    /**     * The position where a lexical error occurred;     */    int errPos = Position.NOPOS;    /**     * The name of an identifier or token:     */    Name name;    /**     * The radix of a numeric literal token.     */    int radix;    /**     * Has a @deprecated been encountered in last doc comment?     *  this needs to be reset by client.     */    boolean deprecatedFlag = false;    /**     * A character buffer for literals.     */    private char[] sbuf = new char[128];    private int sp;    /**     * The input buffer, index of next chacter to be read,     *  index of one past last character in buffer.     */    private char[] buf;    private int bp;    private int buflen;    /**     * The current character.     */    private char ch;    /**     * The line number position of the current character.     */    private int line;    /**     * The column number position of the current character.     */    private int col;    /**     * The buffer index of the last converted unicode character     */    private int unicodeConversionBp = 0;    /**     * The log to be used for error reporting.     */    private final Log log;    /**     * The name table.     */    private final Name.Table names;    /**     * The keyword table.     */    private final Keywords keywords;    /**     * Documentation string of the current token.     */    String docComment = null;    /**     * Buffer for doc comment.     */    private char[] buffer;    /**     * Number of characters in doc comment buffer.     */    private int count;    /**     * Construct a scanner from a file input stream, a log, and a     *  character encoding.     */    public Scanner(Context context, InputStream in, String encoding) {        super();        this.log = Log.instance(context);        this.names = Name.Table.instance(context);        this.keywords = Keywords.instance(context);        try {            int bufsize = in.available() + 1;            if (buf == null || buf.length < bufsize)                buf = new char[bufsize];            buflen = 0;            InputStreamReader reader =                    (encoding == null) ? new InputStreamReader(in) :                    new InputStreamReader(in, encoding);            while (true) {                int nread = reader.read(buf, buflen, buf.length - buflen);                if (nread < 0)                    nread = 0;                buflen = buflen + nread;                if (buflen < buf.length)                    break;                char[] newbuf = new char[buflen * 2];                System.arraycopy(buf, 0, newbuf, 0, buflen);                buf = newbuf;            }        } catch (UnsupportedEncodingException e) {            lexError("unsupported.encoding", encoding);            buf = new char[1];            buflen = 0;        }        catch (IOException e) {            lexError("io.exception", e.toString());            buf = new char[1];            buflen = 0;        }        buf[buflen] = EOI;        line = 1;        col = 0;        bp = -1;        scanChar();        nextToken();    }    /**      * Report an error at the given position using the provided argument.      */    private void lexError(int pos, String msg, String arg) {        log.error(pos, msg, arg);        token = ERROR;        errPos = pos;    }    /**      * Report an error at the given position.      */    private void lexError(int pos, String key) {        lexError(pos, key, null);    }    /**      * Report an error at the current token position.      */    private void lexError(String key) {        lexError(pos, key, null);    }    /**      * Report an error at the current token position using the provided      *  argument.      */    private void lexError(String key, String arg) {        lexError(pos, key, arg);    }    /**      * Report a warning at the given position.      */    private void lexWarning(int pos, String key) {        log.warning(pos, key);    }    /**      * Convert an ASCII digit from its base (8, 10, or 16)      *  to its value.      */    private int digit(int base) {        char c = ch;        int result = Character.digit(c, base);        if (result >= 0 && c > 127) {            lexWarning(pos + 1, "illegal.nonascii.digit");            ch = "0123456789abcdef".charAt(result);        }        return result;    }    /**      * Convert unicode escape; bp points to initial '\' character      *  (Spec 3.3).      */    private void convertUnicode() {        int startcol = col;        if (ch == '\\') {            bp++;            ch = buf[bp];            col++;            if (ch == 'u') {                do {                    bp++;                    ch = buf[bp];                    col++;                } while (ch == 'u')                    ;                int limit = bp + 3;                if (limit < buflen) {                    int d = digit(16);                    int code = d;                    while (bp < limit && d >= 0) {                        bp++;                        ch = buf[bp];                        col++;                        d = digit(16);                        code = (code << 4) + d;                    }                    if (d >= 0) {                        ch = (char) code;                        unicodeConversionBp = bp;                        return;                    }                }                lexError(Position.make(line, startcol), "illegal.unicode.esc");            } else {                bp--;                ch = '\\';                col--;            }        }    }    /**      * Read next character.      */    private void scanChar() {        bp++;        ch = buf[bp];        switch (ch) {        case '\r':            col = 0;            line++;            break;        case '\n':            if (bp == 0 || buf[bp - 1] != '\r') {                col = 0;                line++;            }            break;        case '\t':            col = (col / TabInc * TabInc) + TabInc;            break;        case '\\':            col++;            convertUnicode();            break;        default:            col++;            break;        }    }    /**      * Read next character in comment, skipping over double '\' characters.      */    private void scanCommentChar() {        scanChar();        if (ch == '\\') {            if (buf[bp + 1] == '\\' && unicodeConversionBp != bp) {                bp++;                col++;            } else {                convertUnicode();            }        }    }    /**      * Unconditionally expand the comment buffer.      */    private void expandCommentBuffer() {        char[] newBuffer = new char[buffer.length * 2];        System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);        buffer = newBuffer;    }    /**      *      * Read next character in doc comment, skipping over double '\' characters.      * If a double '\' is skipped, put in the buffer and update buffer count.      */    private void scanDocCommentChar() {        scanChar();        if (ch == '\\') {            if (buf[bp + 1] == '\\' && unicodeConversionBp != bp) {                if (count == buffer.length)                    expandCommentBuffer();                buffer[count++] = ch;                bp++;                col++;            } else {                convertUnicode();            }        }    }    /**      * Append a character to sbuf.      */    private void putChar(char ch) {        if (sp == sbuf.length) {            char[] newsbuf = new char[sbuf.length * 2];            System.arraycopy(sbuf, 0, newsbuf, 0, sbuf.length);            sbuf = newsbuf;        }        sbuf[sp++] = ch;    }    /**      * For debugging purposes: print character.      */    private void dch() {        System.err.print((char) ch);        System.out.flush();    }    /**      * Read next character in character or string literal and copy into sbuf.      */    private void scanLitChar() {        if (ch == '\\') {            if (buf[bp + 1] == '\\' && unicodeConversionBp != bp) {                bp++;                col++;                putChar('\\');                scanChar();            } else {                scanChar();                switch (ch) {                case '0':                case '1':                case '2':                case '3':                case '4':                case '5':                case '6':                case '7':                    char leadch = ch;                    int oct = digit(8);                    scanChar();                    if ('0' <= ch && ch <= '7') {                        oct = oct * 8 + digit(8);                        scanChar();                        if (leadch <= '3' && '0' <= ch && ch <= '7') {                            oct = oct * 8 + digit(8);                            scanChar();                        }                    }                    putChar((char) oct);                    break;                case 'b':                    putChar('\b');                    scanChar();                    break;                case 't':                    putChar('\t');                    scanChar();                    break;                case 'n':                    putChar('\n');                    scanChar();                    break;                case 'f':                    putChar('\f');                    scanChar();                    break;                case 'r':                    putChar('\r');                    scanChar();                    break;                case '\'':                    putChar('\'');                    scanChar();                    break;                case '\"':                    putChar('\"');                    scanChar();                    break;                case '\\':                    putChar('\\');                    scanChar();                    break;                default:                    lexError(Position.make(line, col), "illegal.esc.char");                }            }        } else if (bp != buflen) {            putChar(ch);            scanChar();        }    }    /**      * Read fractional part of floating point number.      */    private void scanFraction() {        while (digit(10) >= 0) {            putChar(ch);            scanChar();        }        int sp1 = sp;        if (ch == 'e' || ch == 'E') {            putChar(ch);            scanChar();            if (ch == '+' || ch == '-') {                putChar(ch);                scanChar();            }            if ('0' <= ch && ch <= '9') {                do {                    putChar(ch);                    scanChar();                } while ('0' <= ch && ch <= '9')                    ;                return;            }            lexError("malformed.fp.lit");            sp = sp1;        }    }    /**      * Read fractional part and 'd' or 'f' suffix of floating point number.      */    private void scanFractionAndSuffix() {        scanFraction();        if (ch == 'f' || ch == 'F') {            putChar(ch);            scanChar();            token = FLOATLITERAL;        } else {            if (ch == 'd' || ch == 'D') {                putChar(ch);                scanChar();            }            token = DOUBLELITERAL;        }    }    /**      * Read a number.      *  @param radix  The radix of the number; one of 8, 10, 16.      */    private void scanNumber(int radix) {        this.radix = radix;        int digitRadix = (radix <= 10) ? 10 : 16;        while (digit(digitRadix) >= 0) {            putChar(ch);            scanChar();        }        if (radix <= 10 && ch == '.') {            putChar(ch);            scanChar();            scanFractionAndSuffix();        } else if (radix <= 10 &&                (ch == 'e' || ch == 'E' || ch == 'f' || ch == 'F' || ch == 'd' ||                ch == 'D')) {            scanFractionAndSuffix();        } else {            if (ch == 'l' || ch == 'L') {                scanChar();                token = LONGLITERAL;            } else {                token = INTLITERAL;            }        }    }    /**      * Read an identifier.      */    private void scanIdent() {        do {            if (sp == sbuf.length)                putChar(ch);            else                sbuf[sp++] = ch;            scanChar();            switch (ch) {            case 'A':            case 'B':            case 'C':            case 'D':            case 'E':            case 'F':            case 'G':            case 'H':            case 'I':            case 'J':            case 'K':            case 'L':            case 'M':            case 'N':            case 'O':            case 'P':            case 'Q':            case 'R':            case 'S':            case 'T':            case 'U':            case 'V':            case 'W':            case 'X':            case 'Y':            case 'Z':            case 'a':            case 'b':            case 'c':            case 'd':            case 'e':            case 'f':            case 'g':            case 'h':            case 'i':            case 'j':            case 'k':            case 'l':            case 'm':            case 'n':            case 'o':

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日产av| av日韩在线网站| 久久精品在线观看| 欧美日韩精品一区二区在线播放 | 久久不见久久见中文字幕免费| 日韩欧美在线123| 国产成人福利片| 日韩va亚洲va欧美va久久| 欧美精品一区二区三区在线 | 国产精品一区二区免费不卡| 国产精品视频第一区| 欧美日韩中文另类| 成人精品电影在线观看| 亚洲高清久久久| 亚洲天堂免费在线观看视频| 日韩欧美一区二区在线视频| 91在线你懂得| 成人黄色软件下载| 国产凹凸在线观看一区二区| 美女网站色91| 日韩精品久久理论片| 亚洲日本免费电影| 亚洲日本免费电影| 亚洲国产欧美另类丝袜| 一区二区三区在线播放| 亚洲欧美在线视频观看| 中文字幕一区二区三区不卡 | 丁香婷婷深情五月亚洲| 国内不卡的二区三区中文字幕| 三级一区在线视频先锋 | 精品欧美黑人一区二区三区| 欧美成人高清电影在线| 日韩精品影音先锋| 欧美精品一区二区久久婷婷| 国产午夜一区二区三区| 国产精品欧美极品| 亚洲一区二区精品3399| 青娱乐精品视频| 国产精品一区二区你懂的| 成人在线视频一区二区| 色又黄又爽网站www久久| 欧美日韩另类国产亚洲欧美一级| 制服.丝袜.亚洲.另类.中文| www国产精品av| 亚洲精品国久久99热| 精品一区二区三区在线观看| 成人v精品蜜桃久久一区| 欧美精品自拍偷拍| 中文在线资源观看网站视频免费不卡| 一区二区不卡在线播放| 精品一区二区三区不卡| 91丨porny丨最新| 精品福利一区二区三区免费视频| 国产精品三级视频| 人人超碰91尤物精品国产| 99久久久精品| 国产目拍亚洲精品99久久精品| 午夜国产精品一区| 91美女精品福利| 国产日韩欧美一区二区三区乱码| 亚洲国产精品尤物yw在线观看| 国产精品1区2区3区在线观看| xf在线a精品一区二区视频网站| 国产一区美女在线| 日韩精品一区二区三区视频在线观看| 专区另类欧美日韩| 91在线观看免费视频| 久久精品视频免费| 六月婷婷色综合| 久久影视一区二区| 成人a区在线观看| 国产精品视频看| 91美女在线视频| 一区二区三区日韩精品视频| 日本韩国欧美一区| 日韩福利电影在线观看| 91麻豆精品国产91久久久资源速度 | 欧美一级二级在线观看| 国产在线不卡视频| 亚洲图片欧美色图| 国产精品一区二区在线播放| 亚洲国产精品久久一线不卡| 不卡的av电影在线观看| 夜夜精品视频一区二区| 亚洲色图欧洲色图| 欧美国产日韩a欧美在线观看| 日韩区在线观看| 91精品国产综合久久国产大片| 久久av资源网| 国产精品热久久久久夜色精品三区| 国产精品99久久久久久宅男| 伊人一区二区三区| 欧美挠脚心视频网站| 国产一区二三区| 日韩国产在线一| 久久精品视频一区二区| 亚洲第一久久影院| 国产亚洲成av人在线观看导航| 在线观看亚洲专区| 国产精品自在欧美一区| 亚洲图片一区二区| 一区在线播放视频| 日韩午夜激情av| 欧美一区二区在线视频| 91网站最新网址| www..com久久爱| 激情六月婷婷久久| 美腿丝袜亚洲三区| 亚洲成人精品影院| 午夜a成v人精品| 国产精品毛片久久久久久| 久草在线在线精品观看| 日本大香伊一区二区三区| 免费在线观看精品| 激情av综合网| 丁香亚洲综合激情啪啪综合| 国产自产2019最新不卡| 国产精品香蕉一区二区三区| 91视频免费看| 欧美一级理论片| 亚洲人成伊人成综合网小说| 亚洲午夜一区二区三区| 日韩电影一区二区三区| 国产精品资源在线| 日韩一区二区在线播放| 国产精品妹子av| 日韩影院精彩在线| 国产高清亚洲一区| 欧美日韩久久久| 亚洲精品视频免费看| 国内不卡的二区三区中文字幕| 成人av在线资源网| 日韩精品一区在线| 蜜臀久久99精品久久久久宅男| 成人午夜私人影院| 久久久www免费人成精品| 亚洲国产裸拍裸体视频在线观看乱了| 国产乱淫av一区二区三区 | 国产盗摄精品一区二区三区在线 | 激情综合色综合久久| 欧美一区二区视频在线观看 | 日本精品裸体写真集在线观看| 国产欧美日韩在线看| 丰满放荡岳乱妇91ww| 国产精品三级av| 欧美午夜精品一区二区三区 | 国产在线精品国自产拍免费| 欧美人体做爰大胆视频| 一区二区在线观看免费| av激情成人网| 亚洲女同ⅹxx女同tv| 99久久久无码国产精品| 亚洲欧洲日韩一区二区三区| 国产91精品免费| 亚洲天堂精品视频| 欧美性猛片aaaaaaa做受| 亚洲一区免费视频| 欧美日产国产精品| 极品少妇一区二区三区精品视频 | 91社区在线播放| 国产一本一道久久香蕉| 日韩欧美自拍偷拍| 国产一区二区三区在线观看免费视频 | 中文字幕电影一区| 在线视频你懂得一区| 毛片不卡一区二区| 中文一区一区三区高中清不卡| 91视频在线观看| 天堂成人国产精品一区| 国产色91在线| 欧美日韩国产综合草草| 国产一区啦啦啦在线观看| 中文字幕一区二区三区在线不卡| 91福利在线播放| 国产精品18久久久久久久久久久久| 日韩一区在线免费观看| 日韩欧美亚洲国产另类| 色综合天天综合网天天看片| 蜜乳av一区二区三区| 亚洲电影一级片| 亚洲色图视频网| 中文字幕第一页久久| 精品三级在线看| 欧美一二三区在线| 777亚洲妇女| 欧美日韩五月天| 欧美日韩一区二区三区四区| 97se亚洲国产综合自在线观| 国产69精品一区二区亚洲孕妇| 麻豆一区二区三| 经典三级视频一区| 精品无码三级在线观看视频| 蜜桃视频一区二区三区在线观看| 亚洲国产cao| 日韩高清一区在线| 精品影院一区二区久久久| 国产一区二区主播在线| 岛国一区二区三区| 99久久99久久精品免费看蜜桃| 成人黄色片在线观看|