public override CompilerResult VisitAddSubExpr(DesignScriptParser.AddSubExprContext context) { VisitExpr(context.expr()[0]); var lhs = valueStack.Pop(); VisitExpr(context.expr()[1]); var rhs = valueStack.Pop(); LLVMValueRef val = default; if (context.Op.Text == "+") { val = LLVM.BuildFAdd(builder, lhs, rhs, "addtmp"); } else if (context.Op.Text == "-") { val = LLVM.BuildFSub(builder, lhs, rhs, "subtmp"); } valueStack.Push(val); return(new NullCompilerResult()); }
/// <summary> /// Visit a parse tree produced by the <c>addSubExpr</c> /// labeled alternative in <see cref="DesignScriptParser.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 VisitAddSubExpr([NotNull] DesignScriptParser.AddSubExprContext context) { return(VisitChildren(context)); }