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); }
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); }
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); }
public PFNViewModel(IPFNEngine pFNEngine, OperatorProperties operatorProperties) { PFNEngine = pFNEngine; OperatorProperties = operatorProperties; EvaluateCommand = new RelayCommand(ExecuteEvaluateCommand, ValidateInput); }