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