예제 #1
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);
     }
 }
 public IRTSType getCastType()
 {
     if (mCastType == null && mChild != null && mChild.getId() == IRTSDefine.Linker.TYPE && mClosed)
     {
         return(((RTSTypeL)mChild).getRTSType());
     }
     else
     {
         return(null);
     }
 }
 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);
     }
 }
예제 #4
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);
     }
 }
예제 #5
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);
     }
 }
예제 #6
0
 override public IRTSRunner createRunner()
 {
     if (mVar != null)
     {
         return(new runner.RTSSquareR(mVar, mChild));
     }
     else
     {
         util.RTSList <IRTSLinker> lst;
         if (mChild == null)
         {
             lst = null;
         }
         else if (mChild.getId() == IRTSDefine.Linker.COMMA)
         {
             lst = ((RTSCommaL)mChild).getChildren();
         }
         else
         {
             lst = new util.RTSList <IRTSLinker>(1);
             lst.add(mChild);
         }
         return(new org.vr.rts.runner.RTSSquareR(lst));
     }
 }
예제 #7
0
 public RTSForR(IRTSLinker initL, IRTSLinker condition, IRTSLinker endL, IRTSLinker bodyL)
 {
     mLins    = new IRTSRunner[3];
     mLins[0] = condition == null ? null : condition.createRunner();
     mLins[1] = bodyL == null ? null : bodyL.createRunner();
     mLins[2] = endL == null ? null : endL.createRunner();
     if (initL == null)
     {
         mInit = null;
     }
     else if (initL.getId() == IRTSDefine.Linker.COMMA)
     {
         org.vr.rts.util.RTSList <IRTSLinker> lst = ((org.vr.rts.linker.RTSCommaL)initL).getChildren();
         if (lst == null || lst.length() == 0)
         {
             mInit = null;
         }
         else
         {
             mInit = new IRTSRunner[lst.length()];
             for (int i = 0; i < mInit.Length; i++)
             {
                 IRTSLinker l = lst.get(i);
                 mInit[i] = l == null ? null : l.createRunner();
             }
         }
     }
     else
     {
         mInit    = new IRTSRunner[1];
         mInit[0] = initL.createRunner();
     }
 }
 public IRTSDefine.Stack run(IRTSStack stack)
 {
     if (mLeftL == null)
     {
         return(0);
     }
     if (!mChildLoaded)
     {
         mChildLoaded = true;
         bool ret = false;
         if (mPreRunner != null)
         {
             mRight = mPreRunner.createRunnerWith(mLeftL, mRightL);
         }
         else
         {
             mRight = mRightL == null ? null : mRightL.createRunner();
             mLeft  = mLeftL.createRunner();
             if (mLeftL.getId() != IRTSDefine.Linker.VARIABLE)
             {
                 ret = stack.getThread().loadRunner(mLeft);
             }
         }
         ret |= stack.getThread().loadRunner(mRight);
         if (ret)
         {
             return(0);
         }
     }
     if (!mEvaluate)
     {
         mEvaluate = true;
         if (mPreRunner != null && mRight != null)
         {
             mLeft = ((RTSBinaryR)mRight).getLeft();
         }
         mLeft.evaluate(stack, mRight == null ? null : mRight.getOutput());
         mValue  = mLeft.getOutput();
         mOutput = mValue as IRTSRunner;
         mLeft   = null;
         if (stack.getThread().loadRunner(mOutput))
         {
             return(0);
         }
     }
     if (mOutput != null)
     {
         mValue  = mOutput.getOutput();
         mOutput = mValue as IRTSRunner;
         if (stack.getThread().loadRunner(mOutput))
         {
             return(0);
         }
     }
     return(0);
 }
예제 #9
0
 public override bool appendLeftChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.BRACKET)
     {
         IRTSType ctp = ((RTSBracketL)linker).getCastType();
         mCastType = ctp;
         return(ctp != null);
     }
     return(false);
 }
예제 #10
0
 override public bool isPriority(IRTSLinker linker)
 {
     if (linker.getId() == mId)
     {
         return(false);
     }
     else
     {
         return(base.isPriority(linker));
     }
 }
예제 #11
0
 override public bool isPriority(IRTSLinker linker)
 {
     if (mOver)
     {
         return(linker.getId() != IRTSDefine.Linker.ELSE);
     }
     else
     {
         return(false);
     }
 }
예제 #12
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);
     }
 }
 override public bool appendLeftChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.BRACKET)
     {
         mCastType = ((RTSBracketL)linker).getCastType();
         return(mCastType != null);
     }
     else
     {
         return(false);
     }
 }
 override public IRTSLinker appendRightChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.PROPERTY)
     {
         mAllProperty |= ((RTSPropertyL)linker).getProperty();
         return(this);
     }
     else
     {
         return(linker);
     }
 }
 override public bool appendLeftChild(IRTSLinker linker)
 {
     if (linker.getId() == IRTSDefine.Linker.PROPERTY)
     {
         mAllProperty |= ((RTSPropertyL)linker).getProperty();
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #16
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);
     }
 }
 override public IRTSDefine.Error onCompile(util.RTSList <IRTSLinker> compileList)
 {
     if (mLeft == null || !RTSUtil.isGoodName(mDomain))
     {
         return(IRTSDefine.Error.Compiling_DenyLinker);
     }
     if (mArgs != null && mArgs.getId() != IRTSDefine.Linker.BRACKET)
     {
         return(IRTSDefine.Error.Compiling_DenyLinker);
     }
     compileList.add(mLeft);
     compileList.add(mArgs);
     return(0);
 }
예제 #18
0
 public bool isVarList()
 {
     for (int i = 0; i < mLins.length(); i++)
     {
         IRTSLinker l = mLins.get(i);
         if (l == null || l.getId() != IRTSDefine.Linker.VARIABLE)
         {
             return(false);
         }
         if (!RTSUtil.isGoodName(l.getSrc()))
         {
             return(false);
         }
     }
     return(true);
 }
예제 #19
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);
        }
예제 #20
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);
     }
 }
예제 #21
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);
     }
 }
 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);
            }
        }
예제 #24
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;
            //}
        }
예제 #25
0
 virtual public bool isPriority(IRTSLinker linker)
 {
     return((mId & IRTSDefine.Linker.PRIORITY_MASK) >= (linker.getId() & IRTSDefine.Linker.PRIORITY_MASK));
 }
예제 #26
0
 public override bool isPriority(IRTSLinker linker)
 {
     return(linker.getId() == IRTSDefine.Linker.SEMICOLON);
 }