public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { var node = VisitSyntaxNode(returnStatementAst.Pipeline); _currentNode = new ReturnStatement(node); return(AstVisitAction.SkipChildren); }
public override object VisitReturnStatement(ReturnStatementAst returnStatementAst) { // Can't count pipeline elements because here it is abstract. So we have to // add extra space in case of pipeline elements script_.Write("return "); VisitElement(returnStatementAst.Pipeline); return(returnStatementAst); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { if (returnStatementAst.Pipeline == null) { throw new ReturnException(); } throw new NotImplementedException(); //VisitReturnStatement(returnStatementAst); }
public void Return() { ReturnStatementAst returnStatementAst = ParseStatement("{ return }") .PipelineElements[0] .Expression .ScriptBlock .EndBlock .Statements[0]; Assert.Null(returnStatementAst.Pipeline); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst ast) { return(DoNextAction(ast)); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { return(Visit(returnStatementAst)); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { throw new NotImplementedException(); //VisitReturnStatement(returnStatementAst); }
object ICustomAstVisitor.VisitReturnStatement(ReturnStatementAst returnStatementAst) => VisitReturnStatement(returnStatementAst);
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { return(false); }
/// <summary/> public virtual AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) => DefaultVisit(returnStatementAst);
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { Console.WriteLine("Visited an ReturnStatementAst."); return(returnStatementAst); }
public override StatementAst VisitReturnStatement(ReturnStatementAst returnStatementAst) => VisitStatement(base.VisitReturnStatement(returnStatementAst));
public virtual TResult VisitReturnStatement(ReturnStatementAst returnStatementAst) => default(TResult);
public static ReturnStatementAst Update(this ReturnStatementAst ast, PipelineBaseAst pipeline = null) { return(new ReturnStatementAst(ast.Extent, pipeline?.Clone() ?? ast.Pipeline?.Clone())); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { // TODO: add return statement explanation AstExplainer(returnStatementAst); return(base.VisitReturnStatement(returnStatementAst)); }
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { throw new UnexpectedElementException(); }
object ICustomAstVisitor.VisitReturnStatement(ReturnStatementAst returnStatementAst) => ProcessRewriter(VisitReturnStatement, returnStatementAst);
public virtual StatementAst VisitReturnStatement(ReturnStatementAst returnStatementAst) { return(new ReturnStatementAst( returnStatementAst.Extent, returnStatementAst.Pipeline?.Rewrite(this, SyntaxKind.Pipeline))); }
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { throw new NotImplementedException(); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst ast) { return(AstVisitAction.Continue); }
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { throw PSTraceSource.NewArgumentException("ast"); }
public void ProcessReturnStatement(ReturnStatementAst returnStatement) { Guard.Against.Null(returnStatement, nameof(returnStatement)); // return_stmt -> 'return' expr? ';' // 无返回值 - 有返回值 if (!IsInFunction) { throw new SemanticException($"Cannot return out side of function defination"); } var sessId = Guid.NewGuid().ToString() ; // load-retval-addr if (CodeGenerationEnabled && CurrentFunction.ReturnType != DataType.Void) { var instruction = Instruction.Pack("arga", 0); instruction.Comment = "load retval addr " + sessId; CurrentFunction.Builder.Bucket.Add(instruction); } DataType actualReturnType; if (returnStatement.ReturnExpression != null) { actualReturnType = ProcessExpression(returnStatement.ReturnExpression); } else { actualReturnType = DataType.Void; } if (actualReturnType != CurrentFunction.ReturnType) { throw new SemanticException( $"Should return {CurrentFunction.ReturnType}, but return {actualReturnType}"); } // returning-expr; if (actualReturnType == DataType.Void) { Debug.Assert(ExpressionBucket.InstructionList.Count == 0); } if (CodeGenerationEnabled) { var exprCode = ExpressionBucket.Pop(); exprCode.ForEach(p => p.Comment += " " + sessId); CurrentFunction.Builder.Bucket.AddRange(exprCode); } // write-retval if (CodeGenerationEnabled && CurrentFunction.ReturnType != DataType.Void) { if (CodeGenerationEnabled) { CurrentFunction.Builder.Bucket.Add(new Instruction("store.64")); } } // ret if (CodeGenerationEnabled) { CurrentFunction.Builder.Bucket.Add(new Instruction("ret") { Comment = " " + sessId }); } }
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) => null;
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { _wasFound = true; _returnPipeline = returnStatementAst.Pipeline; return(AstVisitAction.StopVisit); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) { Console.WriteLine("Visited an ReturnStatementAst."); Console.WriteLine(" " + returnStatementAst.ToString().Replace(Environment.NewLine, Environment.NewLine + " ")); return(AstVisitAction.Continue); }
public virtual object VisitReturnStatement(ReturnStatementAst returnStatementAst) { VisitElement(returnStatementAst.Pipeline); return(returnStatementAst); }
public object VisitReturnStatement(ReturnStatementAst returnStatementAst) { var newPipeline = VisitElement(returnStatementAst.Pipeline); return(new ReturnStatementAst(returnStatementAst.Extent, newPipeline)); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst ast) { return(Check(ast)); }
// ReturnStatementAst Extension Methods // New Methods Available: // - CreateNodeFromAST(NodeDepth, NodePosition, Parent) => Creates a Node public static ReturnNode CreateNodeFromAst(this ReturnStatementAst _ast, int _depth, int _position, Node _parent, Tree _tree) { return(new ReturnNode(_ast, _depth, _position, _parent, _tree)); }
public override AstVisitAction VisitReturnStatement(ReturnStatementAst returnStatementAst) => VisitAst(returnStatementAst);