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

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

?? selector.g

?? 一個java方面的消息訂閱發送的源碼
?? G
?? 第 1 頁 / 共 2 頁
字號:
header
{
/**
 * Redistribution and use of this software and associated documentation
 * ("Software"), with or without modification, are permitted provided
 * that the following conditions are met:
 *
 * 1. Redistributions of source code must retain copyright
 *    statements and notices.  Redistributions must also contain a
 *    copy of this document.
 *
 * 2. Redistributions in binary form must reproduce the
 *    above copyright notice, this list of conditions and the
 *    following disclaimer in the documentation and/or other
 *    materials provided with the distribution.
 *
 * 3. The name "Exolab" must not be used to endorse or promote
 *    products derived from this Software without prior written
 *    permission of Exoffice Technologies.  For written permission,
 *    please contact info@exolab.org.
 *
 * 4. Products derived from this Software may not be called "Exolab"
 *    nor may "Exolab" appear in their names without prior written
 *    permission of Exoffice Technologies. Exolab is a registered
 *    trademark of Exoffice Technologies.
 *
 * 5. Due credit should be given to the Exolab Project
 *    (http://www.exolab.org/).
 *
 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Copyright 2000,2001 (C) Exoffice Technologies Inc. All Rights Reserved.
 */
 
    package org.exolab.jms.selector.parser;


    import org.exolab.jms.selector.Context;
    import org.exolab.jms.selector.Identifiers;
    import org.exolab.jms.selector.SelectorException;
    import org.exolab.jms.selector.Type;

/**
 * Selector parser
 *
 * @version     $Revision: 1.1 $ $Date: 2004/11/26 01:50:45 $
 * @author      <a href="mailto:tima@intalio.com">Tim Anderson</a>
 * @see         SelectorLexer
 * @see         SelectorTreeParser
 */
}

class SelectorParser extends Parser;

options 
{
    exportVocab = Selector;            // call this vocabulary "Selector"
    k = 2;                            // two token lookahead
    buildAST = true;                // build tree
    ASTLabelType = "SelectorAST";   // cast nodes to SelectorAST
    defaultErrorHandler = false;    // abort parsing on error
}

tokens 
{
    // tokens used in tree generation
    UNARY_MINUS;
}

{
    public void initialise() {
        // construct SelectorAST nodes
        setASTNodeClass(SelectorAST.class.getName());
    }

    private void rethrow(String msg, AST node, Token token)
        throws SelectorException {
        if (node != null) {
            throw new SelectorException(((SelectorAST) node).getContext(), 
                msg);
        } else {
            Context context = new Context(token.getLine(), token.getColumn());
            throw new SelectorException(context, msg);
        }
    }
}

selector
    :   orExpression
        EOF!
    ;
    exception
    catch [NoViableAltException error] 
    {
        rethrow(error.getMessage(), error.node, error.token);
    }
    catch [MismatchedTokenException error]
    {
        rethrow(error.getMessage(), error.node, error.token);
    }

orExpression
    :   andExpression 
        ( "or"^ 
            { 
                ##.setReturnType(Type.BOOLEAN); 
            } 
            andExpression 
        )*
    ;

andExpression
    :   notExpression 
        ( "and"^ 
            { 
                ##.setReturnType(Type.BOOLEAN); 
            } 
            notExpression 
        )*
    ;

notExpression
    :   ( "not"^ 
            { 
                ##.setReturnType(Type.BOOLEAN); 
            } 
        ) ? 
        expression
    ;

expression!
    :   expr:sumExpression 
        (
            bool:booleanExpression[#expr] { #expr = #bool; }
        |   comp:comparisonExpression[#expr] { #expr = #comp; }
        )?
        {
            ## = #expr;
        }
    ;

comparisonExpression![SelectorAST lhs]
    :   (   EQUAL eq:sumExpression 
            { 
                ## = #(EQUAL, lhs, #eq); 
            }
        |   NOT_EQUAL ne:sumExpression 
            { 
                ## = #(NOT_EQUAL, lhs, #ne); 
            }
        |   LT lt:sumExpression 
            { 
                ## = #(LT, lhs, #lt); 
            }
        |   GT gt:sumExpression 
            { 
                ## = #(GT, lhs, #gt); 
            }
        |   LE le:sumExpression 
            { 
                ## = #(LE, lhs, #le); 
            }
        |   GE ge:sumExpression 
            { 
                ## = #(GE, lhs, #ge); 
            }
        )
        {
            ##.setReturnType(Type.BOOLEAN);
        }
    ;

sumExpression
    :   productExpression 
        (
            ( PLUS^ | MINUS^ ) 
            { 
                ##.setReturnType(Type.NUMERIC); 
            }
            productExpression 
        )*
    ;

productExpression
    :   unaryExpression 
        (( MULTIPLY^ | DIVIDE^ ) 
            { 
                ##.setReturnType(Type.NUMERIC); 
            }
            unaryExpression )*
    ;

unaryExpression
    :   MINUS^ 
        { 
            ##.setType(UNARY_MINUS); 
            ##.setReturnType(Type.NUMERIC);
        } 
        unaryExpression
    |   PLUS! unaryExpression
    |   term
    ;

term
    :   LPAREN orExpression RPAREN
    |   literal
    |   ident:IDENT
        {
            String name = ident.getText();
            if (Identifiers.isJMSIdentifier(name)) {
                if (Identifiers.isNumeric(name)) {
                    #ident.setReturnType(Type.NUMERIC);
                } else if (Identifiers.isString(name)) {
                    #ident.setReturnType(Type.STRING);
                } else {
                    String msg = "invalid message header identifier: " + name;
                    throw new SelectorException(#ident.getContext(), msg);
                }
            }
        }
    ;

booleanExpression[SelectorAST lhs]
    :   isExpression[lhs]
    |   ( "not"^ ) ? 
        (   betweenExpression[lhs]
        |   likeExpression[lhs]
        |   inExpression[lhs]
        )
    ;

isExpression![SelectorAST lhs]
    :   is:"is" ( not:"not" )? nul:"null"
        {
            ## = #(#is, lhs, #nul);
            if (not != null)
            {
                ## = #(#not, ##);
                ##.setReturnType(Type.BOOLEAN);
            }
            ##.setReturnType(Type.BOOLEAN);
        }
    ;

betweenExpression![SelectorAST lhs]
    :   btw:"between" sum1:sumExpression "and" sum2:sumExpression
        { 
            ## = #(#btw, lhs, #sum1, #sum2);
            ##.setReturnType(Type.BOOLEAN);
        }
    ;

inExpression![SelectorAST lhs]
    :   in:"in" LPAREN values:valueList RPAREN
        {
            ## = #(#in, lhs, LPAREN, #values, RPAREN);
            ##.setReturnType(Type.BOOLEAN);
        }
    ;

likeExpression![SelectorAST lhs]
    :   like:"like" pattern:STRING_LITERAL 
            ( esc:"escape" escape:STRING_LITERAL )?
        {
            ## = (esc != null) 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re亚洲国产精品| 国产aⅴ精品一区二区三区色成熟| 国产亚洲精品bt天堂精选| 91精品国产色综合久久不卡蜜臀 | 狠狠v欧美v日韩v亚洲ⅴ| 日本特黄久久久高潮| 性欧美疯狂xxxxbbbb| 午夜av电影一区| 日本欧美一区二区| 九九热在线视频观看这里只有精品| 视频一区二区欧美| 久草在线在线精品观看| 国产一区二区三区美女| 成人午夜伦理影院| 在线亚洲欧美专区二区| 欧美电影影音先锋| 精品美女被调教视频大全网站| 久久久精品国产免费观看同学| 久久精品在线免费观看| 久久精品日产第一区二区三区高清版| 国产清纯白嫩初高生在线观看91 | 国产高清一区日本| www.日韩av| 欧美色视频一区| 日韩欧美一区电影| 国产精品久久国产精麻豆99网站| 亚洲影院久久精品| 狠狠色丁香九九婷婷综合五月| www.亚洲色图.com| 欧美丰满一区二区免费视频| 国产欧美久久久精品影院| 一区二区日韩av| 九九九久久久精品| 欧美亚洲日本一区| 久久毛片高清国产| 亚洲一区二区三区美女| 国产精品456| 欧美日韩国产片| 亚洲国产精品精华液2区45| 亚洲成a人v欧美综合天堂 | 免费在线观看日韩欧美| 成人动漫视频在线| 日韩欧美专区在线| 亚洲小说春色综合另类电影| 国产呦萝稀缺另类资源| 在线播放91灌醉迷j高跟美女| 国产欧美日韩不卡免费| 九九九精品视频| 欧美性做爰猛烈叫床潮| 中国色在线观看另类| 极品少妇一区二区三区精品视频| 欧日韩精品视频| 亚洲欧美日韩精品久久久久| 国产精品自拍三区| 精品日韩在线观看| 日韩av一区二区在线影视| 色婷婷久久综合| 国产精品福利电影一区二区三区四区| 久久99国产精品成人| 91精品国产一区二区三区蜜臀 | 精品国产一区二区三区忘忧草| 亚洲欧洲在线观看av| 国产成人精品亚洲午夜麻豆| www久久精品| 韩国理伦片一区二区三区在线播放| 欧美日韩精品一区二区三区| 亚洲免费av高清| 91免费版在线| 一区二区三区欧美日| 成人免费高清视频| ...av二区三区久久精品| 成人av集中营| 亚洲视频一区二区在线| 91亚洲精品乱码久久久久久蜜桃 | 国产一区二区三区香蕉| 日韩视频在线永久播放| 精品午夜一区二区三区在线观看| 日韩欧美亚洲一区二区| 久久成人免费网| 久久久久久久久久久99999| 国产一区二区伦理片| 中文在线免费一区三区高中清不卡| 国产精品一级在线| 18成人在线视频| 欧美日韩在线观看一区二区| 婷婷综合另类小说色区| 日韩欧美一区在线观看| 国产精品亚洲一区二区三区妖精 | 亚洲三级在线免费| 91成人看片片| 日韩不卡一区二区三区| 欧美精品一区二区三区在线 | 久久国产视频网| 中文字幕不卡在线观看| 色欧美乱欧美15图片| 日韩精品电影一区亚洲| 久久婷婷国产综合精品青草| 成人av网站免费观看| 亚洲欧美一区二区三区孕妇| 欧美无人高清视频在线观看| 麻豆91免费看| 国产精品免费视频网站| 欧美日本一区二区三区四区| 国内外成人在线视频| 一区在线观看免费| 91精品国产欧美一区二区成人| 国产不卡一区视频| 亚洲成a人片在线不卡一二三区| 欧美精品一区二区三区一线天视频 | 国产成人免费高清| 亚洲欧美激情在线| 欧美v国产在线一区二区三区| eeuss鲁一区二区三区| 肉丝袜脚交视频一区二区| 国产精品嫩草影院com| 欧美日韩的一区二区| kk眼镜猥琐国模调教系列一区二区| 亚洲午夜日本在线观看| 国产偷国产偷精品高清尤物 | 成人免费观看av| 麻豆精品在线看| 亚洲一卡二卡三卡四卡无卡久久| 久久亚洲二区三区| 欧美一级日韩免费不卡| 95精品视频在线| 国产精品12区| 久久99久久精品欧美| 午夜精品久久久久影视| 亚洲欧美日韩人成在线播放| 欧美精彩视频一区二区三区| 日韩三区在线观看| 欧美丝袜丝交足nylons图片| 成人黄色免费短视频| 国产激情视频一区二区三区欧美 | 性做久久久久久免费观看欧美| 中文字幕日韩精品一区| 欧美高清在线一区| 国产亚洲精品aa| 久久久精品国产免费观看同学| 日韩精品一区二| 91精品国产一区二区三区香蕉| 欧美性生交片4| 日本精品视频一区二区| 91免费在线看| 99久久精品免费看国产免费软件| 成人夜色视频网站在线观看| 丁香天五香天堂综合| 国产91在线观看| 成人免费观看视频| 91亚洲永久精品| 欧美中文字幕久久| 欧美色图一区二区三区| 欧美精品色综合| 欧美一级xxx| 欧美精品一区二区三区四区| 精品少妇一区二区三区 | 中文字幕在线不卡一区| 中文字幕日韩一区| 亚洲永久免费av| 日韩成人dvd| 国产精品456| 色综合久久综合网欧美综合网| 91香蕉视频污在线| 欧美优质美女网站| 欧美一卡2卡3卡4卡| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲精品一线二线三线无人区| 国产农村妇女精品| 亚洲欧洲制服丝袜| 日本视频在线一区| 国产剧情一区二区| 色婷婷国产精品| 欧美一级xxx| 国产精品久久午夜| 午夜精品福利视频网站| 国产综合色精品一区二区三区| 粗大黑人巨茎大战欧美成人| 欧美无砖砖区免费| 久久精品一区八戒影视| 亚洲丝袜美腿综合| 久久精品国产成人一区二区三区| 大尺度一区二区| 欧美一区二区三区啪啪| 中文字幕第一区二区| 视频一区视频二区在线观看| 国内精品国产成人国产三级粉色| 99精品久久99久久久久| 欧美一区二区精美| 中文字幕一区二区三区在线播放| 日韩激情一区二区| 99精品国产视频| 日韩精品影音先锋| 亚洲一二三四在线观看| 国产一区二区免费在线| 欧美在线高清视频| 国产精品高清亚洲| 国精产品一区一区三区mba视频 | 五月激情综合色| 99v久久综合狠狠综合久久| 欧美一级淫片007|