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

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

            return(1);
        }
Пример #2
0
        // ( -- n) {s -- s}
        private int CountAction()
        {
            _interpreter.ObjectStackExpect(1);
            _interpreter.StackFree(1);

            var s = _interpreter.OPop().ToString();

            _interpreter.Push(s.Length);
            _interpreter.OPush(s);

            return(1);
        }
Пример #3
0
        // Extra

        // ( -- false | d true) {s -- }
        private int ToNumberAction()
        {
            _interpreter.ObjectStackExpect(1);

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

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

                _interpreter.DPush(n);
                _interpreter.Push(-1);
            }
            else
            {
                _interpreter.StackFree(1);

                _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);
        }