public void VisitReturn(IndentWriter context, AstStatement.ReturnStmt returnStmt) { context.WriteLine($"return {{"); context.Indent(); this.PrintExpression(context, returnStmt.Expression, returnStmt.Scope); context.Unindent(); context.WriteLine("}"); }
public List <Instruction> VisitReturn(object context, AstStatement.ReturnStmt returnStmt) { var scope = returnStmt.Scope; var returnAddress = scope.GetHeapLayoutUntil(scope.GlobalScope.ReturnAddress); var list = new List <Instruction>(); list.Add(WriteLocal, returnAddress); list.AddRange(returnStmt.Expression.Accept(scope, this)); list.Add(ReadLocal, returnAddress); return(list); }
public AstStatement VisitReturn(Scope context, AstStatement.ReturnStmt returnStmt) { returnStmt.Expression = returnStmt.Expression?.Accept(context, this); return(returnStmt); }
public Tree VisitReturn(object c, AstStatement.ReturnStmt returnStmt) => new Tree("return", Expr(returnStmt.Expression));