Exemplo n.º 1
0
 public Instruction(ProgramOperator op)
 {
     _op = op;
 }
Exemplo n.º 2
0
        public void run()
        {
            if (_loaded)
            {
                _vars = new Dictionary<int, var>();
                _cursor = -1;
                _container = -1;

                while (hasNext())
                {
                    _op = (ProgramOperator)getNext();

                    switch (_op)
                    {
                        case ProgramOperator.SET:
                            _container = getNext();
                            if (!_vars.ContainsKey(_container))
                            {
                                _vars.Add(_container, 0);
                            }
                            break;
                        case ProgramOperator.ADD:
                        {
                            _vars[_container] = _vars[_container] + extractVar();
                            break;
                        }
                        case ProgramOperator.REM:
                        _vars[_container] = _vars[_container] - extractVar();
                            break;
                        case ProgramOperator.MUL:
                            _vars[_container] = _vars[_container] * extractVar();
                            break;
                        case ProgramOperator.DIV:
                            _vars[_container] = _vars[_container] / extractVar();
                            break;
                        case ProgramOperator.MOV:
                            _vars[_container] = extractVar();
                            break;
                        case ProgramOperator.PRT:
                            _selected = getNext();
                            if (_vars.ContainsKey(_selected))
                            {
                                Console.WriteLine(_vars[_selected]);
                            }
                            else
                            {
                                throw new RunnerError(ErrorCode.VAR_NOT_SELECTED);
                            }
                            break;
                        default:
                            throw new RunnerError(ErrorCode.BAD_OPERATOR);
                    }
                }
            }
            else
            {
                throw new RunnerError(ErrorCode.BINARY_NOT_LOAD);
            }
        }