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

📄 tokenstream.java

📁 java中比较著名的js引擎当属mozilla开源的rhino
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            }        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return Token.ERROR;    }    /**     *     */    private boolean readQuotedString(int quote) throws IOException    {        for (int c = getChar(); c != EOF_CHAR; c = getChar()) {            addToString(c);            if (c == quote) return true;        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return false;    }    /**     *     */    private boolean readXmlComment() throws IOException    {        for (int c = getChar(); c != EOF_CHAR;) {            addToString(c);            if (c == '-' && peekChar() == '-') {                c = getChar();                addToString(c);                if (peekChar() == '>') {                    c = getChar(); // Skip >                    addToString(c);                    return true;                } else {                    continue;                }            }            c = getChar();        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return false;    }    /**     *     */    private boolean readCDATA() throws IOException    {        for (int c = getChar(); c != EOF_CHAR;) {            addToString(c);            if (c == ']' && peekChar() == ']') {                c = getChar();                addToString(c);                if (peekChar() == '>') {                    c = getChar(); // Skip >                    addToString(c);                    return true;                } else {                    continue;                }            }            c = getChar();        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return false;    }    /**     *     */    private boolean readEntity() throws IOException    {        int declTags = 1;        for (int c = getChar(); c != EOF_CHAR; c = getChar()) {            addToString(c);            switch (c) {            case '<':                declTags++;                break;            case '>':                declTags--;                if (declTags == 0) return true;                break;            }        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return false;    }    /**     *     */    private boolean readPI() throws IOException    {        for (int c = getChar(); c != EOF_CHAR; c = getChar()) {            addToString(c);            if (c == '?' && peekChar() == '>') {                c = getChar(); // Skip >                addToString(c);                return true;            }        }        stringBufferTop = 0; // throw away the string in progress        this.string = null;        parser.addError("msg.XML.bad.form");        return false;    }    private String getStringFromBuffer()    {        return new String(stringBuffer, 0, stringBufferTop);    }    private void addToString(int c)    {        int N = stringBufferTop;        if (N == stringBuffer.length) {            char[] tmp = new char[stringBuffer.length * 2];            System.arraycopy(stringBuffer, 0, tmp, 0, N);            stringBuffer = tmp;        }        stringBuffer[N] = (char)c;        stringBufferTop = N + 1;    }    private void ungetChar(int c)    {        // can not unread past across line boundary        if (ungetCursor != 0 && ungetBuffer[ungetCursor - 1] == '\n')            Kit.codeBug();        ungetBuffer[ungetCursor++] = c;    }    private boolean matchChar(int test) throws IOException    {        int c = getChar();        if (c == test) {            return true;        } else {            ungetChar(c);            return false;        }    }    private int peekChar() throws IOException    {        int c = getChar();        ungetChar(c);        return c;    }    private int getChar() throws IOException    {        if (ungetCursor != 0) {            return ungetBuffer[--ungetCursor];        }        for(;;) {            int c;            if (sourceString != null) {                if (sourceCursor == sourceEnd) {                    hitEOF = true;                    return EOF_CHAR;                }                c = sourceString.charAt(sourceCursor++);            } else {                if (sourceCursor == sourceEnd) {                    if (!fillSourceBuffer()) {                        hitEOF = true;                        return EOF_CHAR;                    }                }                c = sourceBuffer[sourceCursor++];            }            if (lineEndChar >= 0) {                if (lineEndChar == '\r' && c == '\n') {                    lineEndChar = '\n';                    continue;                }                lineEndChar = -1;                lineStart = sourceCursor - 1;                lineno++;            }            if (c <= 127) {                if (c == '\n' || c == '\r') {                    lineEndChar = c;                    c = '\n';                }            } else {                if (isJSFormatChar(c)) {                    continue;                }                if (ScriptRuntime.isJSLineTerminator(c)) {                    lineEndChar = c;                    c = '\n';                }            }            return c;        }    }    private void skipLine() throws IOException    {        // skip to end of line        int c;        while ((c = getChar()) != EOF_CHAR && c != '\n') { }        ungetChar(c);    }    final int getOffset()    {        int n = sourceCursor - lineStart;        if (lineEndChar >= 0) { --n; }        return n;    }    final String getLine()    {        if (sourceString != null) {            // String case            int lineEnd = sourceCursor;            if (lineEndChar >= 0) {                --lineEnd;            } else {                for (; lineEnd != sourceEnd; ++lineEnd) {                    int c = sourceString.charAt(lineEnd);                    if (ScriptRuntime.isJSLineTerminator(c)) {                        break;                    }                }            }            return sourceString.substring(lineStart, lineEnd);        } else {            // Reader case            int lineLength = sourceCursor - lineStart;            if (lineEndChar >= 0) {                --lineLength;            } else {                // Read until the end of line                for (;; ++lineLength) {                    int i = lineStart + lineLength;                    if (i == sourceEnd) {                        try {                            if (!fillSourceBuffer()) { break; }                        } catch (IOException ioe) {                            // ignore it, we're already displaying an error...                            break;                        }                        // i recalculuation as fillSourceBuffer can move saved                        // line buffer and change lineStart                        i = lineStart + lineLength;                    }                    int c = sourceBuffer[i];                    if (ScriptRuntime.isJSLineTerminator(c)) {                        break;                    }                }            }            return new String(sourceBuffer, lineStart, lineLength);        }    }    private boolean fillSourceBuffer() throws IOException    {        if (sourceString != null) Kit.codeBug();        if (sourceEnd == sourceBuffer.length) {            if (lineStart != 0) {                System.arraycopy(sourceBuffer, lineStart, sourceBuffer, 0,                                 sourceEnd - lineStart);                sourceEnd -= lineStart;                sourceCursor -= lineStart;                lineStart = 0;            } else {                char[] tmp = new char[sourceBuffer.length * 2];                System.arraycopy(sourceBuffer, 0, tmp, 0, sourceEnd);                sourceBuffer = tmp;            }        }        int n = sourceReader.read(sourceBuffer, sourceEnd,                                  sourceBuffer.length - sourceEnd);        if (n < 0) {            return false;        }        sourceEnd += n;        return true;    }    // stuff other than whitespace since start of line    private boolean dirtyLine;    String regExpFlags;    private String line;    private boolean fromEval;    // Set this to an inital non-null value so that the Parser has    // something to retrieve even if an error has occured and no    // string is found.  Fosters one class of error, but saves lots of    // code.    private String string = "";    private double number;    private char[] stringBuffer = new char[128];    private int stringBufferTop;    private ObjToIntMap allStrings = new ObjToIntMap(50);    // Room to backtrace from to < on failed match of the last - in <!--    private final int[] ungetBuffer = new int[3];    private int ungetCursor;    private boolean hitEOF = false;    private int lineStart = 0;    private int lineno;    private int lineEndChar = -1;    private String sourceString;    private Reader sourceReader;    private char[] sourceBuffer;    private int sourceEnd;    private int sourceCursor;    // for xml tokenizer    private boolean xmlIsAttribute;    private boolean xmlIsTagContent;    private int xmlOpenTagsCount;    private Parser parser;}

⌨️ 快捷键说明

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