public override Calc_node VisitNode([NotNull] CalcParser.NodeContext context) { Value_node node = new Value_node(); string text = context.GetText(); if (text.ToLower() == "pi" || text == "π") { node.isint = false; node.fresult = Math.PI; } else if (text.ToLower() == "e") { node.isint = false; node.fresult = Math.E; } else { try { node.isint = true; node.result = Convert.ToInt32(text); } catch { node.isint = false; node.fresult = Convert.ToDouble(text); } } return(node); }
/// <summary> /// Visit a parse tree produced by <see cref="CalcParser.node"/>. /// <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 VisitNode([NotNull] CalcParser.NodeContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="CalcParser.node"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitNode([NotNull] CalcParser.NodeContext context) { }