Пример #1
0
        private string evalOperatorSubToken(int precedence, TreeToken subToken)
        {
            bool   brackets = precedence > OperatorProperties.GetPrecedence(subToken);
            string expr     = subToken.Evaluate(this);

            if (brackets)
            {
                expr = $"{ParserSymbols.LBracket}{expr}{ParserSymbols.RBracket}";
            }
            return(expr);
        }
Пример #2
0
        public override string EvaluateOperator(OperatorToken token)
        {
            if (token is SignOperatorToken)
            {
                return(evalSignOperator(token as SignOperatorToken));
            }
            int    precedence = OperatorProperties.GetPrecedence(token);
            string exprLeft   = evalOperatorSubToken(precedence, token.SubTokens[0]);
            string exprRight  = evalOperatorSubToken(precedence, token.SubTokens[1]);

            return(exprLeft + token.Symbol + exprRight);
        }
Пример #3
0
        private string evalSub(StructToken token, int subIndex)
        {
            TreeToken subToken   = token.SubTokens[subIndex];
            int       precedence = OperatorProperties.GetPrecedence(token);
            bool      brackets   = precedence > OperatorProperties.GetPrecedence(subToken);
            string    expr       = subToken.Evaluate(this);

            if (brackets)
            {
                expr = $"<mo>(</mo>{expr}<mo>)</mo>";
            }
            return(expr);
        }
Пример #4
0
 public PFNViewModel(IPFNEngine pFNEngine, OperatorProperties operatorProperties)
 {
     PFNEngine          = pFNEngine;
     OperatorProperties = operatorProperties;
     EvaluateCommand    = new RelayCommand(ExecuteEvaluateCommand, ValidateInput);
 }