コード例 #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();
        }
コード例 #2
0
ファイル: FormulaParser.cs プロジェクト: seuribe/Logik
 private bool CurrentIsOperator() => OperatorLibrary.IsOperator(current);
コード例 #3
0
ファイル: FormulaParser.cs プロジェクト: seuribe/Logik
 private bool CurrentIsUnary() => CurrentIsUnaryToken() &&
 (CurrentIsStartOfExpression() || StackTopIsSemicolon() || OperatorLibrary.IsOperator(previous));