override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.COLON)
     {
         if (mOnFalse)
         {
             return(linker);
         }
         mOnFalse = true;
         return(this);
     }
     else if (mOnFalse)
     {
         IRTSLinker ret = mFalseL;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mFalseL = linker;
         linker.setSuper(this);
         return(ret);
     }
     else
     {
         IRTSLinker ret = mTrueL;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mTrueL = linker;
         linker.setSuper(this);
         return(ret);
     }
 }
예제 #2
0
 override public IRTSLinker appendRightChild(IRTSLinker oper)
 {
     IRTSDefine.Linker id = oper.getId();
     if (mCArg)
     {
         if (id == IRTSDefine.Linker.BRACKET2)
         {
             mCArg = false;
             mCur++;
             return(this);
         }
         else if (id == IRTSDefine.Linker.SEMICOLON)
         {
             if (mCur < 2)
             {
                 mCur++;
                 return(this);
             }
             else
             {
                 return(oper);
             }
         }
         else
         {
             IRTSLinker ret = mChildren[mCur];
             if (ret != null)
             {
                 ret.setSuper(null);
             }
             mChildren[mCur] = oper;
             oper.setSuper(this);
             return(ret);
         }
     }
     else if (mCur == 0)
     {
         if (id != IRTSDefine.Linker.BRACKET)
         {
             return(oper);
         }
         mCArg = true;
         return(this);
     }
     else
     {
         if (mCur != 3)
         {
             return(oper);
         }
         IRTSLinker ret = mChildren[mCur];
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mChildren[mCur] = oper;
         oper.setSuper(this);
         return(ret);
     }
 }
예제 #3
0
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     IRTSDefine.Linker id = linker.getId();
     if (id == IRTSDefine.Linker.SEMICOLON)
     {
         if (mBodyL == null)
         {
             return(linker);
         }
         mOver = true;
         return(this);
     }
     else
     {
         if (mOver)
         {
             return(linker);
         }
         IRTSLinker ret = mBodyL;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mBodyL = linker;
         linker.setSuper(this);
         if (linker.isStructure())
         {
             mOver = true;
         }
         return(ret);
     }
 }
 override public bool appendLeftChild(IRTSLinker oper)
 {
     mVar = oper;
     oper.setSuper(this);
     mVarAtLeft = true;
     return(true);
 }
예제 #5
0
 override public bool appendLeftChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.BRACKET)
     {
         IRTSType ctp = ((RTSBracketL)linker).getCastType();
         mCastType = ctp;
         return(ctp != null);
     }
     else if (linker.getId() == IRTSDefine.Linker.PROPERTY)
     {
         mProperty |= ((RTSPropertyL)linker).getProperty();
         return(true);
     }
     else if (linker.getId() == IRTSDefine.Linker.TYPE)
     {
         mProperty |= IRTSDefine.Property.DECALRE;
         mCastType  = ((RTSTypeL)linker).getRTSType();
         linker.setSuper(this);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #6
0
        public override IRTSLinker appendRightChild(IRTSLinker linker)
        {
            IRTSLinker ret = mChild;

            if (ret != null)
            {
                ret.setSuper(null);
            }
            mChild = linker;
            mChild.setSuper(this);
            return(ret);
        }
예제 #7
0
        override public IRTSLinker appendRightChild(IRTSLinker linker)
        {
            IRTSLinker ret = mChildL;

            if (ret != null)
            {
                ret.setSuper(null);
            }
            mChildL = linker;
            linker.setSuper(this);
            return(ret);
        }
예제 #8
0
 override public bool appendLeftChild(IRTSLinker linker)
 {
     if (mLins.length() == 0)
     {
         mLins.add(linker);
         linker.setSuper(this);
         return(true);
     }
     else
     {
         return(false);
     }
 }
        override public IRTSLinker appendRightChild(IRTSLinker oper)
        {
            IRTSLinker ret = mVar;

            if (ret != null)
            {
                ret.setSuper(null);
            }
            mVarAtLeft = false;
            mVar       = oper;
            oper.setSuper(this);
            return(ret);
        }
예제 #10
0
 override public bool appendLeftChild(IRTSLinker linker)
 {
     if (mVar == null)
     {
         mVar = linker;
         linker.setSuper(this);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 public override bool appendLeftChild(IRTSLinker linker)
 {
     if (mLeft == null)
     {
         mLeft = linker;
         mLeft.setSuper(this);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #12
0
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (mVarName == null)
     {
         if (linker.getId() != IRTSDefine.Linker.VARIABLE || !RTSUtil.isGoodName(linker.getSrc()))
         {
             return(linker);
         }
         mVarName = linker.getSrc();
         return(this);
     }
     else if (mArg == null)
     {
         if (linker.getId() != IRTSDefine.Linker.BRACKET)
         {
             return(linker);
         }
         mId  = IRTSDefine.Linker.FUNCTION_DEFINE;
         mArg = linker;
         linker.setSuper(this);
         return(null);
     }
     else if (mBody == null)
     {
         if (linker.getId() != IRTSDefine.Linker.BRACKET_FLOWER)
         {
             return(linker);
         }
         mId   = IRTSDefine.Linker.FUNCTION_DEFINE;
         mBody = linker;
         linker.setSuper(this);
         return(null);
     }
     else
     {
         return(linker);
     }
 }
예제 #13
0
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (mArg == null)
     {
         if (linker.getId() != IRTSDefine.Linker.BRACKET)
         {
             return(linker);
         }
         mArg = linker;
         linker.setSuper(this);
         return(null);
     }
     else
     {
         return(linker);
     }
 }
예제 #14
0
        override public IRTSLinker appendRightChild(IRTSLinker linker)
        {
            if (linker.getId() == IRTSDefine.Linker.BRACKET_SQUARE2)
            {
                mClosed = true;
                return(this);
            }
            IRTSLinker ret = mChild;

            if (ret != null)
            {
                ret.setSuper(null);
            }
            mChild = linker;
            linker.setSuper(this);
            return(ret);
        }
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (mType == IRTSDefine.Stack.ACTION_RETURN)
     {
         IRTSLinker lin = mChild;
         if (lin != null)
         {
             lin.setSuper(null);
         }
         mChild = linker;
         linker.setSuper(this);
         return(lin);
     }
     else
     {
         return(linker);
     }
 }
예제 #16
0
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (linker.getId() == mId)
     {
         mLins.add(mCur);
         mCur = null;
         return(this);
     }
     else
     {
         IRTSLinker lin = mCur;
         if (lin != null)
         {
             lin.setSuper(null);
         }
         mCur = linker;
         linker.setSuper(this);
         return(lin);
     }
 }
예제 #17
0
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (linker.getId() == mRId)
     {
         mClosed = true;
         return(this);
     }
     else if (linker.getId() == IRTSDefine.Linker.SEMICOLON)
     {
         if (mTempL != null)
         {
             if (mChildrenL == null)
             {
                 mChildrenL = new org.vr.rts.util.RTSList <IRTSLinker>(2, 5);
             }
             mChildrenL.add(mTempL);
             mTempL = null;
         }
         return(this);
     }
     else
     {
         if (mTempL != null && mTempL.isStructure())
         {
             if (mChildrenL == null)
             {
                 mChildrenL = new org.vr.rts.util.RTSList <IRTSLinker>(2, 5);
             }
             mChildrenL.add(mTempL);
             mTempL = null;
         }
         IRTSLinker ret = mTempL;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mTempL = linker;
         linker.setSuper(this);
         return(ret);
     }
 }
 public override IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (string.IsNullOrEmpty(mDomain))
     {
         mDomain = linker.getSrc();
         return(this);
     }
     else
     {
         var ret = mArgs;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mArgs = linker;
         if (mArgs != null)
         {
             mArgs.setSuper(this);
         }
         return(ret);
     }
 }
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (mClosed)
     {
         return(linker);
     }
     if (linker.getId() == mRId)
     {
         mClosed = true;
         return(this);
     }
     else
     {
         IRTSLinker ret = mChild;
         if (ret != null)
         {
             ret.setSuper(null);
         }
         mChild = linker;
         linker.setSuper(this);
         return(ret);
     }
 }
        //override public bool isPriority(IRTSLinker linker)
        //{
        //    return linker.isStructure()
        //            && linker.getId() != IRTSDefine.Linker.SEMICOLON;
        //}

        override public IRTSLinker appendRightChild(IRTSLinker linker)
        {
            if (linker.getId() == IRTSDefine.Linker.COMMA)
            {
                if (!(mCur is RTSVariableL))
                {
                    return(linker);
                }
                mVars.add((RTSVariableL)mCur);
                mCur = null;
                return(this);
            }
            else
            {
                IRTSLinker ret = mCur;
                if (ret != null)
                {
                    ret.setSuper(null);
                }
                mCur = linker;
                linker.setSuper(this);
                return(ret);
            }
        }
예제 #21
0
        override public IRTSLinker appendRightChild(IRTSLinker linker)
        {
            IRTSDefine.Linker id = linker.getId();
            if (mOnBody)
            {
                if (id == IRTSDefine.Linker.ELSE)
                {
                    if (mElseL != null)
                    {
                        return(linker);
                    }
                    mOver  = true;
                    mElseL = linker;
                    linker.setSuper(this);
                    return(null);
                }
                else if (id == IRTSDefine.Linker.SEMICOLON)
                {
                    if (mBodyL == null || mOver)
                    {
                        return(linker);
                    }
                    mOver = true;
                    return(this);
                }
                else if (linker.isStructure())
                {
                    if (mBodyL != null)
                    {
                        return(linker);
                    }
                    mOver  = true;
                    mBodyL = linker;
                    linker.setSuper(this);
                    return(null);
                }
                else
                {
                    if (mOver)
                    {
                        return(linker);
                    }
                    IRTSLinker ret = mBodyL;
                    if (ret != null)
                    {
                        ret.setSuper(null);
                    }
                    mBodyL = linker;
                    linker.setSuper(this);
                    return(ret);
                }
            }
            else
            {
                if (id == IRTSDefine.Linker.THEN)
                {
                    mOnBody = true;
                    return(this);
                }
                IRTSLinker ret = mConditionL;
                if (ret != null)
                {
                    ret.setSuper(null);
                }
                mConditionL = linker;
                linker.setSuper(this);
                return(ret);
            }

            //if (mConditionL == null)
            //{
            //    if (id != IRTSDefine.Linker.BRACKET)
            //        return linker;
            //    mConditionL = linker;
            //    linker.setSuper(this);
            //    return null;
            //}
            //else if (id == IRTSDefine.Linker.ELSE)
            //{
            //    if (mElseL != null)
            //        return linker;
            //    mOver = true;
            //    mElseL = linker;
            //    linker.setSuper(this);
            //    return null;
            //}
            //else if (id == IRTSDefine.Linker.SEMICOLON)
            //{
            //    if (mBodyL == null || mOver)
            //        return linker;
            //    mOver = true;
            //    return this;
            //}
            //else if (linker.isStructure())
            //{
            //    if (mBodyL != null)
            //        return linker;
            //    mOver = true;
            //    mBodyL = linker;
            //    linker.setSuper(this);
            //    return null;
            //}
            //else
            //{
            //    if (mOver)
            //        return linker;
            //    IRTSLinker ret = mBodyL;
            //    if (ret != null)
            //        ret.setSuper(null);
            //    mBodyL = linker;
            //    linker.setSuper(this);
            //    return ret;
            //}
        }
예제 #22
0
 public override IRTSLinker appendRightChild(IRTSLinker linker)
 {
     linker.setSuper(this);
     mArgs.add(linker);
     return(null);
 }