Пример #1
0
        // (addr -- ) {o -- }
        private int StoreToVariableAction()
        {
            var addr = _interpreter.Pop();

            _interpreter.State.ObjectHeap.Items[addr] = _interpreter.OPop();

            return(1);
        }
Пример #2
0
        // {o --}
        private int PrintStringAction()
        {
            _interpreter.ObjectStackExpect(1);

            _interpreter.Output.Write(_interpreter.OPop().ToString());

            return(1);
        }
Пример #3
0
        // ( -- false | n true) {s -- }
        private int ToNumberAction()
        {
            _interpreter.StackFree(1);

            var n = _interpreter.ParseIntegerNumber(_interpreter.OPop().ToString(), out var success);

            if (success)
            {
                _interpreter.StackFree(2);

                _interpreter.Push((int)n);
                _interpreter.Push(-1);
            }
            else
            {
                _interpreter.Push(0);
            }

            return(1);
        }
Пример #4
0
        // ( -- false | true) (F: | f -- ) {s -- }
        private int ToNumberAction()
        {
            _interpreter.ObjectStackExpect(1);

            var f = _interpreter.ParseFloatingPointNumber(_interpreter.OPop().ToString(), out var success);

            if (success)
            {
                _interpreter.StackFree(1);
                _interpreter.FStackFree(1);

                _interpreter.FPush(f);
                _interpreter.Push(-1);
            }
            else
            {
                _interpreter.StackFree(1);

                _interpreter.Push(0);
            }

            return(1);
        }