public override void BeforeVisit(Function node) { base.BeforeVisit(node); //_currentOutputExp = Expression.Parameter(typeof (TextWriter), CurrentOutputIdentifier); //Create return target _returnLabelTarget = Expression.Label(typeof(object), "lambdaReturn"); }
internal Module(LoadDirective[] loadStmts, UseStatementList useStmts, DefStatement[] globalDefStmts, Function[] functions) : base(HappySourceLocation.None, HappySourceLocation.None) { ContractUtils.RequiresNotNull(loadStmts, "loadStmts"); ContractUtils.RequiresNotNull(useStmts, "useStmts"); ContractUtils.RequiresNotNull(globalDefStmts, "globalDefStmts"); ContractUtils.RequiresNotNull(functions, "functions"); this.LoadDirectives = loadStmts; this.UseStatements = useStmts; this.GlobalDefStatements = globalDefStmts; this.Functions = functions; }
public override void AfterVisit(Function node) { Expression expression = _expressionStack.Pop(); //Should be a BlockExpression List<ParameterExpression> parameters = null; if (node.ParameterList != null) parameters = _expressionStack.Pop(node.ParameterList.Count, false).Cast<ParameterExpression>().ToList(); List<Expression> outerExpressions = new List<Expression>(); LabelExpression returnLabel = Expression.Label(_returnLabelTarget, Expression.Default(typeof(object))); outerExpressions.Add(expression); outerExpressions.Add(returnLabel); var completeFunctionBody = MaybeBlock(outerExpressions); LambdaExpression funcLambda = Expression.Lambda(completeFunctionBody, node.Name.Text, parameters); _expressionStack.Push(node, this.PropertyOrFieldSet(node.Name.Text, _globalScopeExp, funcLambda)); base.AfterVisit(node); }
public virtual void AfterVisit(Function node) { this.AfterVisitCatchAll(node); }
public virtual void BeforeVisit(Function node) { this.BeforeVisitCatchAll(node); }
public override void BeforeVisit(Function node) { base.BeforeVisit(node); _loopStack = new Stack<LoopStatementBase>(); }
public override void AfterVisit(Function node) { base.AfterVisit(node); DebugAssert.AreEqual(0, _loopStack.Count, "_loopStack not empty"); _loopStack = null; }