コード例 #1
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        public override void Execute(Interpreter inI)
        {
            IntStack    istack = inI.IntStack();
            ObjectStack estack = inI.ExecStack();

            if (_stack.Size() > 0 && istack.Size() > 0)
            {
                if (istack.Top() > 0)
                {
                    int    stop    = istack.Pop() - 1;
                    object bodyObj = _stack.Pop();
                    try
                    {
                        Program doRangeMacroProgram = new Program();
                        doRangeMacroProgram.Push(0);
                        doRangeMacroProgram.Push(stop);
                        doRangeMacroProgram.Push("exec.do*range");
                        doRangeMacroProgram.Push(bodyObj);
                        estack.Push(doRangeMacroProgram);
                    }
                    catch (Exception)
                    {
                        Console.Error.WriteLine("Error while initializing a program.");
                    }
                }
            }
        }
コード例 #2
0
        public override void Execute(Interpreter inI)
        {
            ObjectStack cstack = inI.CodeStack();
            ObjectStack estack = inI.ExecStack();

            if (estack.Size() > 0)
            {
                cstack.Push(estack.Pop());
            }
        }
コード例 #3
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        public override void Execute(Interpreter inI)
        {
            ObjectStack codeStack = inI.CodeStack();
            FloatStack  fStack    = inI.FloatStack();

            if (fStack.Size() > 0)
            {
                codeStack.Push(fStack.Pop());
            }
        }
コード例 #4
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        public override void Execute(Interpreter inI)
        {
            ObjectStack codeStack = inI.CodeStack();
            IntStack    iStack    = inI.IntStack();

            if (iStack.Size() > 0)
            {
                codeStack.Push(iStack.Pop());
            }
        }
コード例 #5
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        // End code iteration functions
        //
        // Conversion instructions to code
        //
        public override void Execute(Interpreter inI)
        {
            ObjectStack  codeStack = inI.CodeStack();
            BooleanStack bStack    = inI.BoolStack();

            if (bStack.Size() > 0)
            {
                codeStack.Push(bStack.Pop());
            }
        }
コード例 #6
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        public override void Execute(Interpreter inI)
        {
            BooleanStack bstack = inI.BoolStack();
            ObjectStack  estack = inI.ExecStack();

            if (_stack.Size() > 1 && bstack.Size() > 0)
            {
                bool   istrue  = bstack.Pop();
                object iftrue  = _stack.Pop();
                object iffalse = _stack.Pop();
                if (istrue)
                {
                    estack.Push(iftrue);
                }
                else
                {
                    estack.Push(iffalse);
                }
            }
        }
コード例 #7
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        // Begin exec iteration functions
        public override void Execute(Interpreter inI)
        {
            IntStack    istack = inI.IntStack();
            ObjectStack estack = inI.ExecStack();

            if (_stack.Size() > 0 && istack.Size() > 1)
            {
                int    stop  = istack.Pop();
                int    start = istack.Pop();
                object code  = _stack.Pop();
                if (start == stop)
                {
                    istack.Push(start);
                    estack.Push(code);
                }
                else
                {
                    istack.Push(start);
                    start = (start < stop) ? (start + 1) : (start - 1);
                    // trh//Made changes to correct errors with code.do*range
                    try
                    {
                        Program recursiveCallProgram = new Program();
                        recursiveCallProgram.Push(start);
                        recursiveCallProgram.Push(stop);
                        recursiveCallProgram.Push("exec.do*range");
                        recursiveCallProgram.Push(code);
                        estack.Push(recursiveCallProgram);
                    }
                    catch (Exception)
                    {
                        Console.Error.WriteLine("Error while initializing a program.");
                    }
                    estack.Push(code);
                }
            }
        }
コード例 #8
0
ファイル: Instructions.cs プロジェクト: lulzzz/BraneCloud
        public override void Execute(Interpreter inI)
        {
            IntStack    istack = inI.IntStack();
            ObjectStack estack = inI.ExecStack();

            if (_stack.Size() > 0 && istack.Size() > 0)
            {
                if (istack.Top() > 0)
                {
                    object bodyObj = _stack.Pop();
                    if (bodyObj is Program)
                    {
                        // insert integer.pop in front of program
                        ((Program)bodyObj).Shove("integer.pop", ((Program)bodyObj)._size);
                    }
                    else
                    {
                        // create a new program with integer.pop in front of
                        // the popped object
                        Program newProgram = new Program();
                        newProgram.Push("integer.pop");
                        newProgram.Push(bodyObj);
                        bodyObj = newProgram;
                    }
                    int stop = istack.Pop() - 1;
                    try
                    {
                        Program doRangeMacroProgram = new Program();
                        doRangeMacroProgram.Push(0);
                        doRangeMacroProgram.Push(stop);
                        doRangeMacroProgram.Push("code.quote");
                        doRangeMacroProgram.Push(bodyObj);
                        doRangeMacroProgram.Push("code.do*range");
                        estack.Push(doRangeMacroProgram);
                    }
                    catch (Exception)
                    {
                        Console.Error.WriteLine("Error while initializing a program.");
                    }
                }
            }
        }