Exemplo n.º 1
0
        public EvalNodeBuilder(List <string> postfix)
        {
            var tokens = new Queue <string>(postfix);

            while (tokens.Count > 0)
            {
                var token = tokens.Dequeue();

                if (OperatorLibrary.IsOperator(token))
                {
                    PushOperator(token);
                }
                else if (IsFunction(token))
                {
                    var arity = int.Parse(tokens.Dequeue());
                    PushFunction(token, arity);
                }
                else if (IsBool(token))
                {
                    PushBool(token);
                }
                else if (IsValue(token))
                {
                    PushValue(token);
                }
                else if (IsString(token))
                {
                    PushString(token);
                }
                else
                {
                    PushCellReferenceNode(token);
                }
            }
            Root = treeNodes.Pop();
        }
Exemplo n.º 2
0
 private bool CurrentIsOperator() => OperatorLibrary.IsOperator(current);
Exemplo n.º 3
0
 private bool CurrentIsUnary() => CurrentIsUnaryToken() &&
 (CurrentIsStartOfExpression() || StackTopIsSemicolon() || OperatorLibrary.IsOperator(previous));