private bool TryParseFactor(out AstNode node) { if (IsNext(TokenType.Minus)) { var op = Accept(); if (TryParseImplicitMultiplication(out node)) { node = new NegationUnaryOperatorAstNode(op, node); } else { throw new Exception($"Exception parsing the factor rule at position {_lexer.Position}"); } } else { TryParseImplicitMultiplication(out node); } return(node != null); }
private double Evaluate(NegationUnaryOperatorAstNode node) => - 1 * Evaluate(node.Target as dynamic);