public override object VisitExpr(ExpressionParser.ExprContext context) { if ((context.DEBUG() != null) && (Debugger.IsAttached)) { Debugger.Break(); } var result = Visit(context.form()); if (unit != null) { if (unit != "") { if (!(result is NumericValue)) { throw new Exception("Cannot change units on non-numeric result"); } if ((result as NumericValue).Units.HasUnits) { result = (result as NumericValue).ConvertUnits(new ExpressionUnits(unit)).StripUnits(); } } else if (result is NumericValue) { result = (result as NumericValue).StripUnits(); } } return(Simplify(result)); }
public NEExpression(string expression) { this.expression = expression; try { tree = ParserHelper.Parse <ExpressionLexer, ExpressionParser, ExpressionParser.ExprContext>(expression, parser => parser.expr(), true); } catch (Exception ex) { throw new Exception("Invalid expression", ex); } }
public override IExpression <T> VisitExpr(ExpressionParser.ExprContext context) { return(Visit(context.GetChild(0))); }
/// <summary> /// Visit a parse tree produced by <see cref="ExpressionParser.expr"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitExpr([NotNull] ExpressionParser.ExprContext context) { return(VisitChildren(context)); }