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

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

?? reduction.java

?? Groovy動態(tài)語言 運行在JVM中的動態(tài)語言 可以方便的處理業(yè)務邏輯變化大的業(yè)務
?? JAVA
字號:
/*
 $Id: Reduction.java 4032 2006-08-30 07:18:49Z mguillem $

 Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.

 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 "groovy" must not be used to endorse or promote
    products derived from this Software without prior written
    permission of The Codehaus.  For written permission,
    please contact info@codehaus.org.

 4. Products derived from this Software may not be called "groovy"
    nor may "groovy" appear in their names without prior written
    permission of The Codehaus. "groovy" is a registered
    trademark of The Codehaus.

 5. Due credit should be given to The Codehaus -
    http://groovy.codehaus.org/

 THIS SOFTWARE IS PROVIDED BY THE CODEHAUS 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
 THE CODEHAUS 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.

 */

package org.codehaus.groovy.syntax;

import org.codehaus.groovy.GroovyBugError;
import org.codehaus.groovy.syntax.Token;

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;


/** 
 *  A syntax reduction, produced by the <code>Parser</code>.
 *
 *  @see antlr.Parser
 *  @see Token
 *  @see CSTNode
 *  @see Types
 *
 *  @author <a href="mailto:bob@werken.com">bob mcwhirter</a>
 *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
 *
 *  @version $Id: Reduction.java 4032 2006-08-30 07:18:49Z mguillem $
 */

public class Reduction extends CSTNode
{
    public static final Reduction EMPTY = new Reduction();


  //---------------------------------------------------------------------------
  // INITIALIZATION AND SUCH

    private List    elements  = null;    // The set of child nodes   
    private boolean marked    = false;   // Used for completion marking by some parts of the parser


   /**
    *  Initializes the <code>Reduction</code> with the specified root.
    */

    public Reduction( Token root ) 
    {
        elements = new ArrayList();
        set( 0, root );
    }


   /**
    *  Initializes the <code>Reduction</code> to empty.
    */

    private Reduction() 
    {
        elements = Collections.EMPTY_LIST;
    }


   /**
    *  Creates a new <code>Reduction</code> with <code>Token.NULL</code>
    *  as it's root.
    */

    public static Reduction newContainer() 
    {
        return new Reduction( Token.NULL );
    }




  //---------------------------------------------------------------------------
  // MEMBER ACCESS


   /**
    *  Returns true if the node is completely empty (no root, even).
    */

    public boolean isEmpty() 
    {
        return size() == 0;
    }



   /**
    *  Returns the number of elements in the node.
    */

    public int size() 
    {
        return elements.size();
    }



   /**
    *  Returns the specified element, or null.
    */

    public CSTNode get( int index ) 
    {
        CSTNode element = null;

        if( index < size() ) 
        {
            element = (CSTNode)elements.get( index );
        }

        return element;
    }



   /**
    *  Returns the root of the node, the Token that indicates it's
    *  type.  Returns null if there is no root (usually only if the
    *  node is a placeholder of some kind -- see isEmpty()).
    */

    public Token getRoot() 
    {
        if( size() > 0 )
        {
            return (Token)elements.get(0);
        }
        else
        {
            return null;
        }
    }



   /**
    *  Marks the node a complete expression.
    */

    public void markAsExpression() 
    {
        marked = true;
    }



   /**
    *  Returns true if the node is a complete expression.
    */

    public boolean isAnExpression() 
    {
        if( isA(Types.COMPLEX_EXPRESSION) ) 
        {
            return true;
        }

        return marked;
    }




  //---------------------------------------------------------------------------
  // OPERATIONS


   /**
    *  Adds an element to the node.
    */

    public CSTNode add( CSTNode element ) 
    {
        return set( size(), element );
    }



   /**
    *  Sets an element in at the specified index.
    */

    public CSTNode set( int index, CSTNode element ) 
    {
        
        if( elements == null ) 
        {
            throw new GroovyBugError( "attempt to set() on a EMPTY Reduction" );
        }

        if( index == 0 && !(element instanceof Token) ) 
        {

            //
            // It's not the greatest of design that the interface allows this, but it
            // is a tradeoff with convenience, and the convenience is more important.

            throw new GroovyBugError( "attempt to set() a non-Token as root of a Reduction" );
        }


        //
        // Fill slots with nulls, if necessary.

        int count = elements.size();
        if( index >= count ) 
        {
            for( int i = count; i <= index; i++ ) 
            {
                elements.add( null );
            }
        }

        //
        // Then set in the element.

        elements.set( index, element );

        return element;
    }



   /**
    *  Removes a node from the <code>Reduction</code>.  You cannot remove 
    *  the root node (index 0).
    */

    public CSTNode remove( int index )
    {
        if( index < 1 ) 
        {
            throw new GroovyBugError( "attempt to remove() root node of Reduction" );
        }

        return (CSTNode)elements.remove( index );
    }



   /**
    *  Creates a <code>Reduction</code> from this node.  Returns self if the
    *  node is already a <code>Reduction</code>.
    */

    public Reduction asReduction() 
    {
        return this;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产视频在线观看| 亚洲欧洲精品天堂一级 | 欧美日韩国产不卡| 99国产精品视频免费观看| 国产成人精品免费在线| 国产呦精品一区二区三区网站| 蜜臂av日日欢夜夜爽一区| 视频在线观看一区二区三区| 亚洲第一电影网| 偷偷要91色婷婷| 亚洲成人久久影院| 五月天欧美精品| 日韩制服丝袜av| 久久99国产精品久久| 激情五月播播久久久精品| 精品一区二区三区在线观看 | 国产精品综合视频| 国产成人日日夜夜| av不卡一区二区三区| 色综合久久综合| 欧美日韩一区在线观看| 欧美美女bb生活片| 欧美大黄免费观看| 久久精品在线免费观看| 亚洲欧洲日韩在线| 婷婷中文字幕一区三区| 精品一区二区三区免费播放| 国产成人小视频| 在线观看视频一区二区| 欧美一区二区三区日韩视频| 日韩午夜精品视频| 国产亚洲污的网站| 18成人在线观看| 亚洲mv在线观看| 国产一区二区中文字幕| jlzzjlzz欧美大全| 欧美乱妇15p| 欧美激情综合五月色丁香小说| 国产精品久久久久婷婷二区次| 亚洲午夜影视影院在线观看| 久久精品72免费观看| 成人ar影院免费观看视频| 欧美色爱综合网| 久久这里只有精品6| 亚洲精品视频在线观看网站| 日本 国产 欧美色综合| 成人教育av在线| 9191久久久久久久久久久| 国产日产欧美一区二区视频| 一区二区三区在线视频免费 | 色综合久久久久综合| 欧美乱熟臀69xxxxxx| 欧美经典三级视频一区二区三区| 亚洲福利电影网| 不卡在线视频中文字幕| 91精品国产一区二区三区| 欧美激情一区在线观看| 五月天欧美精品| youjizz国产精品| 日韩欧美成人一区二区| 亚洲色图第一区| 精品一区二区综合| 在线精品视频一区二区| 国产欧美日韩视频在线观看| 亚洲一区日韩精品中文字幕| 国产激情一区二区三区桃花岛亚洲| 欧美在线视频你懂得| 中日韩免费视频中文字幕| 男男视频亚洲欧美| 欧美在线影院一区二区| 国产精品你懂的| 国产一区二区三区日韩 | 国产欧美一区二区精品婷婷| 三级在线观看一区二区| 99国产精品久久久久久久久久 | 久久婷婷国产综合精品青草| 亚洲 欧美综合在线网络| 99久久精品一区二区| 久久久久亚洲综合| 日本系列欧美系列| 欧美中文字幕不卡| 亚洲乱码国产乱码精品精98午夜| 国产成人精品免费在线| 亚洲精品一区二区三区在线观看| 亚洲国产sm捆绑调教视频| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 97久久精品人人爽人人爽蜜臀| 久久免费午夜影院| 九九**精品视频免费播放| 制服丝袜亚洲色图| 亚洲成人高清在线| 在线中文字幕一区二区| 一区精品在线播放| 成人爱爱电影网址| 亚洲国产精品高清| 国产成人精品免费| 久久在线观看免费| 国产精品99久久久久久久女警| 欧美电影精品一区二区| 美日韩一区二区| 日韩一区二区麻豆国产| 肉肉av福利一精品导航| 91精品国产入口在线| 午夜欧美视频在线观看| 欧美日韩国产色站一区二区三区| 一级女性全黄久久生活片免费| 色综合一个色综合亚洲| 亚洲黄色免费电影| 欧美性xxxxx极品少妇| 亚洲一区二区av电影| 欧美日韩综合不卡| 午夜精品成人在线| 91精品国产高清一区二区三区| 日韩中文字幕麻豆| 日韩欧美不卡一区| 国产精品一二一区| 18欧美亚洲精品| 精品视频一区三区九区| 午夜精品视频一区| 欧美va日韩va| 粉嫩高潮美女一区二区三区 | 亚洲欧美一区二区三区孕妇| 91在线精品秘密一区二区| 一区二区三区鲁丝不卡| 欧美片在线播放| 精品制服美女久久| 国产无一区二区| 91激情五月电影| 美女www一区二区| 国产欧美综合在线观看第十页| av资源站一区| 丝袜a∨在线一区二区三区不卡| 欧美一区二区黄| 丁香一区二区三区| 亚洲美女一区二区三区| 欧美绝品在线观看成人午夜影视| 久久精品国产澳门| 国产精品久久久久久久久果冻传媒| 91久久精品国产91性色tv| 日韩精品免费专区| 国产午夜精品一区二区三区四区| 91在线视频官网| 麻豆久久一区二区| 国产精品第一页第二页第三页| 欧美视频在线观看一区二区| 青青草原综合久久大伊人精品优势| 久久久精品日韩欧美| 日本韩国欧美三级| 国内偷窥港台综合视频在线播放| 国产精品国产三级国产普通话99 | 国产精品夜夜爽| 亚洲人午夜精品天堂一二香蕉| 欧美日韩午夜在线| 国产一区二区不卡老阿姨| 国产福利一区二区| 亚洲国产视频在线| 久久久精品影视| 欧美精品九九99久久| 成人激情小说网站| 免费在线观看一区| 亚洲免费视频成人| 欧美大尺度电影在线| 色成年激情久久综合| 国产一区二区三区最好精华液| 亚洲精品视频在线观看网站| 久久综合九色综合欧美98 | 亚洲精品国产品国语在线app| 日韩欧美一级特黄在线播放| 色综合亚洲欧洲| 国产另类ts人妖一区二区| 亚洲成人一区二区| 中文字幕第一页久久| 日韩亚洲国产中文字幕欧美| 91麻豆国产在线观看| 国产一区二区成人久久免费影院| 婷婷六月综合亚洲| 亚洲乱码国产乱码精品精可以看| 久久久久9999亚洲精品| 欧美精品自拍偷拍动漫精品| 91视频91自| 成人丝袜18视频在线观看| 日本伊人精品一区二区三区观看方式| 最好看的中文字幕久久| 日本一区二区不卡视频| 久久久久久久综合日本| 欧美一区二区三区的| 欧美日韩精品是欧美日韩精品| 99在线精品观看| 高清成人免费视频| 韩国精品久久久| 精品一区二区综合| 久久国产精品99精品国产| 亚洲线精品一区二区三区八戒| 日韩毛片一二三区| 国产精品久久99| 日本一区二区三区国色天香| 久久一二三国产| 久久综合色8888| 久久久蜜臀国产一区二区| 精品伦理精品一区|