public override Node VisitExpression([NotNull] FlyLangParser.ExpressionContext context) { if (context.op != null) { var op = context.op; return(new Expression(Visit(context.left), Visit(context.right), op.Text)); } if (context.methodCall() != null) { return(Visit(context.methodCall())); } if (context.varCall() != null) { return(Visit(context.varCall())); } if (context.intLit() != null || context.@string() != null || context.floatLit() != null) { return(base.VisitExpression(context)); } if (context.boolean() != null) { return(new Literal(context.boolean().GetText() == "true")); } if (context.PRL() != null && context.PRR() != null && context.expression() != null) { return(Visit(context.expression(0))); } if (context.array() != null) { return(Visit(context.array())); } if (context.dictionary() != null) { return(Visit(context.dictionary())); } throw new Exception(); }
/// <summary> /// Visit a parse tree produced by <see cref="FlyLangParser.expression"/>. /// <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 VisitExpression([NotNull] FlyLangParser.ExpressionContext context) { return(VisitChildren(context)); }