Beispiel #1
0
 private void PutCustomValueToken(RusticValueEvaluator value)
 {
     if (nextOperation == null)
     {
         throw new Exception($"Expecting operator, but received operand ({value.GetType().Name})");
     }
     nextOperation.parameter = value;
     currentStack.operations.Add(nextOperation);
     nextOperation = null;
 }
Beispiel #2
0
        private void PutOperationOfHigherPriority(RusticOperation operation)
        {
            nextOperation = operation;
            RusticOperation      lastOperationFromStack = currentStack.operations[currentStack.operations.Count - 1];
            RusticValueEvaluator lastOperationValue     = lastOperationFromStack.parameter;
            RusticStack          newStack = new RusticStack(stacks.Count, currentStack, operation.GetPriorityWithOffset());

            lastOperationFromStack.parameter = new Evaluators.StackReference(newStack);
            RusticOperation newSetOperation = new Operations.Set();

            newSetOperation.parameter = lastOperationValue;
            newStack.operations.Add(newSetOperation);
            int index = stacks.IndexOf(currentStack);

            stacks.Insert(index + 1, newStack);
            currentStack = newStack;
        }