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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tokenizer.java

?? 用JAVA實(shí)現(xiàn)了,將DB裝入內(nèi)存,內(nèi)存由DBMS控制,實(shí)現(xiàn)簡單數(shù)據(jù)庫的創(chuàng)建、數(shù)據(jù)表的創(chuàng)建、記錄插入、查詢以及表的刪除。
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package org.kdb.parser;

import org.kdb.KdbException;

import java.util.HashMap;
import java.util.Locale;

import org.kdb.Trace;

/**

 * Date: 2007-10-29
 * Time: 11:18:16
 */
public class Tokenizer {
    private static final int NO_TYPE = 0,
            NAME = 1,
            LONG_NAME = 2,
            SPECIAL = 3,
            NUMBER = 4,
            FLOAT = 5,
            STRING = 6,
            LONG = 7,
            DECIMAL = 8,
            BOOLEAN = 9,
            DATE = 10,
            TIME = 11,
            TIMESTAMP = 12,
            NULL = 13,
            NAMED_PARAM = 14;

    // used only internally
    private static final int QUOTED_IDENTIFIER = 15,
            REMARK_LINE = 16,
            REMARK = 17;
    private String sCommand;
    private int iLength;
    private int iIndex;
    private int tokenIndex;
    private int nextTokenIndex;
    private int beginIndex;
    private int iType;
    private String sToken;
    private int indexLongNameFirst = -1;
    private String sLongNameFirst = null;
    private int typeLongNameFirst;

    // getToken() will clear LongNameFirst unless retainFirst is set.
    private boolean retainFirst = false;

    //    private String           sLongNameLast;
    // WAIT.  Don't do anything before popping another Token (because the
    // state variables aren't set properly due to a call of wait()).
    private boolean bWait;
    private boolean lastTokenQuotedID;

    // literals that are values
    static HashMap<String, Integer> valueTokens;

    static {
        valueTokens = new HashMap<String, Integer>();

        valueTokens.put(Token.T_NULL, NULL);
        valueTokens.put(Token.T_TRUE, BOOLEAN);
        valueTokens.put(Token.T_FALSE, BOOLEAN);
    }

    public Tokenizer() {
    }

    public Tokenizer(String s) {

        sCommand = s;
        iLength = s.length();
        iIndex = 0;
    }

    public void reset(String s) {

        sCommand = s;
        iLength = s.length();
        iIndex = 0;
        tokenIndex = 0;
        nextTokenIndex = 0;
        beginIndex = 0;
        iType = NO_TYPE;
        typeLongNameFirst = NO_TYPE;
        sToken = null;
        indexLongNameFirst = -1;
        sLongNameFirst = null;

//        sLongNameLast  = null;
        bWait = false;
        lastTokenQuotedID = false;
        retainFirst = false;
    }

    /**
     * @throws KdbException
     */
    void back() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        nextTokenIndex = iIndex;
        iIndex = (indexLongNameFirst != -1) ? indexLongNameFirst : tokenIndex;
        bWait = true;
    }

    /**
     * get the given token or throw
     * <p/>
     * for commands and simple unquoted identifiers only
     *
     * @param match
     * @throws KdbException
     */
    String getThis(String match) throws KdbException {

        getToken();
        matchThis(match);

        return sToken;
    }

    /**
     * for commands and simple unquoted identifiers only
     */
    void matchThis(String match) throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        if (!sToken.equals(match) || iType == QUOTED_IDENTIFIER
                || iType == LONG_NAME) {
            String token = iType == LONG_NAME ? sLongNameFirst
                    : sToken;

            throw Trace.error(Trace.UNEXPECTED_TOKEN, Trace.TOKEN_REQUIRED,
                    new Object[]{
                            token, match
                    });
        }
    }

    void throwUnexpected() throws KdbException {

        String token = iType == LONG_NAME ? sLongNameFirst
                : sToken;

        throw Trace.error(Trace.UNEXPECTED_TOKEN, token);
    }

    /**
     * Used for commands only
     *
     * @param match
     */
    public boolean isGetThis(String match) throws KdbException {

        getToken();

        if (iType != QUOTED_IDENTIFIER && iType != LONG_NAME
                && sToken.equals(match)) {
            return true;
        }

        back();

        return false;
    }

    /**
     * this methode is called before other wasXXX methods and takes
     * precedence
     */
    boolean wasValue() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        switch (iType) {

            case STRING:
            case NUMBER:
            case LONG:
            case FLOAT:
            case DECIMAL:
            case BOOLEAN:
            case NULL:
                return true;

            default:
                return false;
        }
    }

    boolean wasQuotedIdentifier() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        return lastTokenQuotedID;

        // iType won't help for LONG_NAMEs.
        //return iType == QUOTED_IDENTIFIER;
    }

    boolean wasFirstQuotedIdentifier() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        return (typeLongNameFirst == QUOTED_IDENTIFIER);
    }

    /**
     * Method declaration
     *
     * @return
     */
    boolean wasLongName() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        return iType == LONG_NAME;
    }

    /**
     * Simple Name means a quoted or unquoted identifier without
     * qualifiers provided it is not in the hKeyword list.
     *
     * @return
     */
    boolean wasSimpleName() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        if (iType == QUOTED_IDENTIFIER && sToken.length() != 0) {
            return true;
        }

        if (iType != NAME) {
            return false;
        }

        return !Token.isKeyword(sToken);
    }

    /**
     * checks whether the previously obtained token was a (named) parameter
     *
     * @return true if the previously obtained token was a (named) parameter
     */
    boolean wasParameter() throws KdbException {

        Trace.doAssert(!bWait, "Querying state when in Wait mode");

        return (iType == NAMED_PARAM);
    }

    /**
     * Name means all quoted and unquoted identifiers plus any word not in the
     * hKeyword list.
     *
     * @return true if it's a name
     */
    boolean wasName() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        if (iType == QUOTED_IDENTIFIER) {
            return true;
        }

        if (iType != NAME && iType != LONG_NAME) {
            return false;
        }

        return !Token.isKeyword(sToken);
    }

    String getLongNamePre() throws KdbException {
        return null;
    }

    /**
     * Return first part of long name
     *
     * @return
     */
    String getLongNameFirst() throws KdbException {

        if (bWait) {
            Trace.doAssert(false, "Querying state when in Wait mode");
        }

        return sLongNameFirst;
    }

    boolean wasSimpleToken() throws KdbException {
        return iType != QUOTED_IDENTIFIER && iType != LONG_NAME
                && iType != STRING && iType != NAMED_PARAM;
    }

    String getSimpleToken() throws KdbException {

        getToken();

        if (!wasSimpleToken()) {
            String token = iType == LONG_NAME ? sLongNameFirst
                    : sToken;

            throw Trace.error(Trace.UNEXPECTED_TOKEN, token);
        }

        return sToken;
    }

    public boolean wasThis(String match) throws KdbException {

        if (sToken.equals(match) && iType != QUOTED_IDENTIFIER
                && iType != LONG_NAME && iType != STRING) {
            return true;
        }

        return false;
    }

    /**
     * getName() is more broad than getSimpleName() in that it includes
     * 2-part names as well
     *
     * @return popped name
     * @throws KdbException if next token is not an AName
     */
    public String getName() throws KdbException {

        getToken();

        if (!wasName()) {
//            throw Trace.error(Trace.UNEXPECTED_TOKEN, sToken);
        }

        return sToken;
    }

    /**
     * Returns a single, unqualified name (identifier)
     *
     * @return name
     * @throws KdbException
     */
    public String getSimpleName() throws KdbException {

        getToken();

        if (!wasSimpleName()) {
            String token = iType == LONG_NAME ? sLongNameFirst
                    : sToken;

            throw Trace.error(Trace.UNEXPECTED_TOKEN, token);
        }

        return sToken;
    }

    /**
     * Return any token.
     *
     * @return
     * @throws KdbException
     */
    public String getString() throws KdbException {

        getToken();

        return sToken;
    }

//    int getInt() throws KdbException {
//
//        long v = getBigint();
//
//        if (v > Integer.MAX_VALUE || v < Integer.MIN_VALUE) {
//            throw Trace.error(Trace.WRONG_DATA_TYPE,
//                              Types.getTypeString(getType()));
//        }
//
//        return (int) v;
//    }
//
//    static BigDecimal LONG_MAX_VALUE_INCREMENT =
//        BigDecimal.getType(Long.MAX_VALUE).add(BigDecimal.getType(1));
//
//    long getBigint() throws KdbException {
//
//        boolean minus = false;
//
//        getToken();
//
//        if (sToken.equals("-")) {
//            minus = true;
//
//            getToken();
//        }
//
//        Object o = getAsValue();
//        int    t = getType();
//
//        switch (t) {
//
//            case Types.INTEGER :
//            case Types.BIGINT :
//                break;
//
//            case Types.DECIMAL :
//
//                // only Long.MAX_VALUE + 1 together with minus is acceptable
//                if (minus && LONG_MAX_VALUE_INCREMENT.equals(o)) {
//                    return Long.MIN_VALUE;
//                }
//            default :
//                throw Trace.error(Trace.WRONG_DATA_TYPE,
//                                  Types.getTypeString(t));
//        }
//
//        long v = ((Number) o).longValue();
//
//        return minus ? -v
//                     : v;
//    }
//
//    Object getInType(int type) throws KdbException {
//
//        getToken();
//
//        Object o = getAsValue();
//        int    t = getType();
//
//        if (t != type) {
//            throw Trace.error(Trace.WRONG_DATA_TYPE, Types.getTypeString(t));
//        }
//
//        return o;
//    }
//
//    /**
//     *
//     *
//     *
//     * @return
//     */
//    public int getType() throws KdbException {
//
//        if (bWait) {
//            Trace.doAssert(false, "Querying state when in Wait mode");
//        }
//
//        // todo: make sure it's used only for Values!
//        // todo: synchronize iType with hColumn
//        switch (iType) {
//
//            case STRING :
//                return Types.VARCHAR;
//
//            case NUMBER :
//                return Types.INTEGER;
//
//            case LONG :
//                return Types.BIGINT;
//
//            case FLOAT :
//                return Types.DOUBLE;
//
//            case DECIMAL :
//                return Types.DECIMAL;
//
//            case BOOLEAN :
//                return Types.BOOLEAN;
//
//            case DATE :
//                return Types.DATE;
//
//            case TIME :
//                return Types.TIME;
//
//            case TIMESTAMP :
//                return Types.TIMESTAMP;
//
//            default :
//                return Types.NULL;
//        }
//    }

    /**
     * Method declaration
     *
     * @return
     * @throws KdbException
     */
//    Object getAsValue() throws KdbException {
//
//        if (!wasValue()) {
//            throw Trace.error(Trace.UNEXPECTED_TOKEN, sToken);
//        }
//
//        switch (iType) {
//
//            case NULL:
//                return null;
//
//            case STRING:
//
//                //fredt - no longer returning string with a singlequote as last char
//                return sToken;
//
//            case LONG:
//                return ValuePool.getLong(Long.parseLong(sToken));
//
//            case NUMBER:
//
//                // fredt - this returns unsigned values which are later negated.
//                // as a result Integer.MIN_VALUE or Long.MIN_VALUE are promoted
//                // to a wider type.
//                if (sToken.length() < 11) {
//                    try {
//                        return ValuePool.getInt(Integer.parseInt(sToken));
//                    } catch (Exception e1) {
//                    }
//                }
//
//                if (sToken.length() < 20) {
//                    try {
//                        iType = LONG;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品视频网| 久久国产尿小便嘘嘘| 99久久精品免费看| 狠狠色丁香婷婷综合| 另类成人小视频在线| 亚洲黄色性网站| 欧美天堂一区二区三区| 日韩电影在线免费| 亚洲美女视频在线观看| 一区二区欧美国产| 日韩精品三区四区| 91网站黄www| 欧美久久久久免费| 综合av第一页| 成人一区在线观看| 国产精品第一页第二页第三页| 一区二区三区欧美在线观看| 一本到一区二区三区| 中文字幕制服丝袜一区二区三区| 国产成人8x视频一区二区| 在线一区二区三区四区五区| 日韩欧美一二区| 一区二区三区成人| 99久久精品99国产精品 | 欧美在线不卡视频| 欧美成人性战久久| 日韩免费视频一区二区| 色综合天天综合网天天狠天天| 欧美精品aⅴ在线视频| 精品人在线二区三区| 欧美久久久久久蜜桃| 91亚洲男人天堂| 欧美人与性动xxxx| 亚洲精品国产一区二区三区四区在线 | 国产欧美日本一区视频| 国产精品美女久久久久aⅴ国产馆| 777精品伊人久久久久大香线蕉| 欧美日产国产精品| 欧美成人性福生活免费看| 久久久久久久久99精品| 中文字幕亚洲区| 国产精品久久久久久久岛一牛影视| 欧美日韩国产高清一区二区三区 | 国产精品入口麻豆原神| 国内精品写真在线观看| 国产精品三级av| 欧美日韩激情一区二区三区| 日韩精品乱码免费| 国产亚洲午夜高清国产拍精品| 色94色欧美sute亚洲13| 久久91精品久久久久久秒播| 亚洲视频一区在线观看| 一区二区三区免费看视频| 国产精品麻豆欧美日韩ww| 97se亚洲国产综合在线| 日韩精品中文字幕在线一区| 7777精品伊人久久久大香线蕉经典版下载| 亚洲少妇30p| 成人欧美一区二区三区| 国产精品人成在线观看免费 | 欧美日高清视频| 欧美在线制服丝袜| 欧美视频在线一区| 欧美日韩午夜在线视频| 久久麻豆一区二区| 国产精品久久久久久久久搜平片| 中文字幕一区二区不卡| 欧美一区二区啪啪| 欧美一区二区三区免费在线看| 欧美一区二区在线观看| 国产午夜精品在线观看| 26uuu另类欧美亚洲曰本| 成人欧美一区二区三区黑人麻豆 | 中文字幕欧美国产| 一区在线观看免费| 亚洲电影一级片| 91黄色激情网站| 欧美大片国产精品| 亚洲男女毛片无遮挡| 日韩美女久久久| 色哟哟在线观看一区二区三区| 在线观看日韩av先锋影音电影院| 日韩西西人体444www| 自拍偷在线精品自拍偷无码专区 | 久久国产免费看| 99久久国产免费看| 欧美日韩在线播放三区四区| 亚洲一区二区三区四区在线免费观看 | 国产馆精品极品| 欧美影视一区二区三区| 精品久久国产字幕高潮| 五月天欧美精品| 成人在线视频一区| 在线不卡免费av| 一级精品视频在线观看宜春院 | 91啪在线观看| 亚洲精品一区二区三区影院| 欧美一区二区三区性视频| 亚洲国产综合色| 91玉足脚交白嫩脚丫在线播放| 日韩欧美一区在线| 亚洲欧美综合在线精品| 欧美日韩一区二区三区四区 | 国产综合色精品一区二区三区| 国产999精品久久| 日韩欧美一区二区免费| 日产国产高清一区二区三区 | 国产精品免费aⅴ片在线观看| 蜜桃视频一区二区三区在线观看| 欧美在线不卡视频| 蜜桃精品在线观看| 欧美日韩一区 二区 三区 久久精品| 一区免费观看视频| 另类小说欧美激情| 中文在线免费一区三区高中清不卡| 国产乱码精品一区二区三区忘忧草| 日韩欧美精品三级| 亚洲444eee在线观看| 久久久久国产精品人| 亚洲午夜激情av| 欧美日韩中文字幕一区二区| 《视频一区视频二区| 国产不卡视频一区| 亚洲午夜视频在线| 欧美视频一二三区| 亚洲乱码国产乱码精品精98午夜| 免费高清视频精品| 国产精品三级在线观看| 国产精品影视在线| 中文字幕欧美国产| 国产精品自拍三区| 日韩美女主播在线视频一区二区三区| 亚洲成人动漫一区| 欧美大胆一级视频| 91在线观看污| 亚洲图片欧美综合| 欧美日韩国产小视频| 首页欧美精品中文字幕| 国产精品福利影院| 色丁香久综合在线久综合在线观看| 亚洲私人影院在线观看| 91网站在线播放| 国产99一区视频免费 | 性欧美疯狂xxxxbbbb| 欧美一区午夜精品| 精品一区二区三区av| 日韩精品久久久久久| 日韩一区二区三区三四区视频在线观看 | 亚洲精品videosex极品| 欧美私模裸体表演在线观看| 精品一区二区三区的国产在线播放| 亚洲人123区| 亚洲精品在线观看网站| 色乱码一区二区三区88| 国产在线播放一区三区四| 亚洲精选免费视频| 国产亚洲欧美激情| 欧美日韩aaaaaa| 97久久精品人人做人人爽| 国产欧美久久久精品影院| 精品国产91亚洲一区二区三区婷婷| 91一区二区三区在线播放| 蜜臀久久久99精品久久久久久| 免费亚洲电影在线| 亚洲人成网站在线| 精品国产欧美一区二区| 91视频在线观看免费| 国产91综合一区在线观看| 日本午夜一本久久久综合| 国产精品久久久99| 国产精品午夜在线观看| 日韩欧美一区在线| 成人a区在线观看| 在线精品视频免费观看| 成人免费视频一区| 黄色日韩网站视频| 狠狠久久亚洲欧美| 亚洲小说欧美激情另类| 国产精品成人午夜| 这里只有精品视频在线观看| 日本韩国欧美一区| 不卡一区在线观看| 久久福利资源站| 国产91在线|亚洲| 成人综合在线观看| 国产精品123| 三级欧美韩日大片在线看| 日韩经典中文字幕一区| 午夜精品久久久久| 五月婷婷激情综合| 国产一区视频网站| 国产精品69久久久久水密桃| 国产麻豆精品95视频| 免费欧美在线视频| 久久99国产精品免费网站| 日韩精品福利网| 亚洲老妇xxxxxx| 国产欧美一区二区精品性色超碰| 亚洲欧美激情插| 亚洲国产另类av|