コード例 #1
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
        public void Execute(Interpreter inI)
        {
            ObjectStack codeStack = inI.CodeStack();
            FloatStack  fStack    = inI.FloatStack();

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

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

            if (bStack.Size() > 0)
            {
                codeStack.Push(bStack.Pop());
            }
        }
コード例 #4
0
        public void Execute(Interpreter inI)
        {
            ObjectStack cstack = inI.CodeStack();
            ObjectStack estack = inI.ExecStack();

            if (estack.Size() > 0)
            {
                cstack.Push(estack.Pop());
            }
        }
コード例 #5
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
        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);
                }
            }
        }
コード例 #6
0
ファイル: InputPusher.cs プロジェクト: shanecelis/PshSharp
        public void PushInput(Interpreter inI, int n)
        {
            ObjectStack _stack = inI.InputStack();

            if (_stack.Size() > n)
            {
                object inObject = _stack.DeepPeek(n);
                if (inObject is int)
                {
                    IntStack istack = inI.IntStack();
                    istack.Push((int)inObject);
                }
                else
                {
                    // if (inObject is Number)
                    // {
                    //   FloatStack fstack = inI.FloatStack();
                    //   fstack.Push(((Number)inObject).FloatValue());
                    // }
                    //else
                    if (inObject is float)
                    {
                        FloatStack fstack = inI.FloatStack();
                        fstack.Push((float)inObject);
                    }
                    else
                    {
                        if (inObject is bool)
                        {
                            BooleanStack bstack = inI.BoolStack();
                            bstack.Push((bool)inObject);
                        }
                        else
                        {
                            Console.Error.WriteLine("Error during input.index - object " + inObject.GetType() + " is not a legal object according to " + this.GetType() + ".");
                        }
                    }
                }
            }
        }
コード例 #7
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
        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.");
                    }
                }
            }
        }
コード例 #8
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
        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.");
                    }
                }
            }
        }
コード例 #9
0
 protected ObjectStackInstruction(ObjectStack inStack)
 {
     _stack = inStack;
 }
コード例 #10
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal RandomPushCode(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #11
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal IF(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #12
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal ObjectEquals(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #13
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal ExecY(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #14
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal InputInRev(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #15
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 public ObjectConstant(ObjectStack inStack, object inValue) : base(inStack)
 {
     _value = inValue;
 }
コード例 #16
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal InputIndex(ObjectStack inStack)
     : base(inStack)
 {
 }
コード例 #17
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal ExecS(ObjectStack inStack, int inMaxPointsInProgram)
     : base(inStack)
 {
     _maxPointsInProgram = inMaxPointsInProgram;
 }
コード例 #18
0
ファイル: Instructions.cs プロジェクト: shanecelis/PshSharp
 internal InputInAll(ObjectStack inStack)
     : base(inStack)
 {
 }