public LocalLookupVariable(string name, TypeReference typeRef, Location startPos, Location endPos, bool isConst, bool isLoopVariable, Expression initializer, LambdaExpression parentLambdaExpression, bool isQueryContinuation)
 {
     this.Name = name;
     this.TypeRef = typeRef;
     this.StartPos = startPos;
     this.EndPos = endPos;
     this.IsConst = isConst;
     this.IsLoopVariable = isLoopVariable;
     this.Initializer = initializer;
     this.ParentLambdaExpression = parentLambdaExpression;
     this.IsQueryContinuation = isQueryContinuation;
 }
 public override sealed object VisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     this.BeginVisit(lambdaExpression);
     object result = this.TrackedVisitLambdaExpression(lambdaExpression, data);
     this.EndVisit(lambdaExpression);
     return result;
 }
 public virtual object TrackedVisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     return base.VisitLambdaExpression(lambdaExpression, data);
 }
        public void AddVariable(TypeReference typeRef, string name,
		                        Location startPos, Location endPos, bool isConst,
		                        bool isLoopVariable, Expression initializer,
		                        LambdaExpression parentLambdaExpression,
		                        bool isQueryContinuation)
        {
            if (name == null || name.Length == 0) {
                return;
            }
            List<LocalLookupVariable> list;
            if (!variables.ContainsKey(name)) {
                variables[name] = list = new List<LocalLookupVariable>();
            } else {
                list = (List<LocalLookupVariable>)variables[name];
            }
            list.Add(new LocalLookupVariable(name, typeRef, startPos, endPos, isConst, isLoopVariable, initializer, parentLambdaExpression, isQueryContinuation));
        }
 public override object VisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     foreach (ParameterDeclarationExpression p in lambdaExpression.Parameters) {
         AddVariable(p.TypeReference, p.ParameterName,
                     lambdaExpression.StartLocation, lambdaExpression.ExtendedEndLocation,
                     false, false, null, lambdaExpression, false);
     }
     return base.VisitLambdaExpression(lambdaExpression, data);
 }
 public virtual object VisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     Debug.Assert((lambdaExpression != null));
     Debug.Assert((lambdaExpression.Parameters != null));
     Debug.Assert((lambdaExpression.StatementBody != null));
     Debug.Assert((lambdaExpression.ExpressionBody != null));
     Debug.Assert((lambdaExpression.ReturnType != null));
     foreach (ParameterDeclarationExpression o in lambdaExpression.Parameters) {
         Debug.Assert(o != null);
         o.AcceptVisitor(this, data);
     }
     lambdaExpression.StatementBody.AcceptVisitor(this, data);
     lambdaExpression.ExpressionBody.AcceptVisitor(this, data);
     return lambdaExpression.ReturnType.AcceptVisitor(this, data);
 }
 public virtual object VisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     throw new global::System.NotImplementedException("LambdaExpression");
 }
Exemple #8
0
        void SubLambdaExpression(out LambdaExpression lambda)
        {
            lambda = new LambdaExpression();
            lambda.ReturnType = new TypeReference("System.Void", true);
            Statement statement = null;
            lambda.StartLocation = la.Location;

            Expect(210);
            Expect(37);
            if (StartOf(7)) {
            FormalParameterList(lambda.Parameters);
            }
            Expect(38);
            if (StartOf(1)) {
            EmbeddedStatement(out statement);
            lambda.StatementBody = statement;
                lambda.EndLocation = t.EndLocation;

            } else if (la.kind == 1) {
            Get();
            Block(out statement);
            Expect(113);
            Expect(210);
            lambda.StatementBody = statement;
                lambda.EndLocation = t.EndLocation;

            } else SynErr(293);
        }
Exemple #9
0
        void FunctionLambdaExpression(out LambdaExpression lambda)
        {
            lambda = new LambdaExpression();
            TypeReference typeRef = null;
            Expression inner = null;
            Statement statement = null;
            lambda.StartLocation = la.Location;

            Expect(127);
            Expect(37);
            if (StartOf(7)) {
            FormalParameterList(lambda.Parameters);
            }
            Expect(38);
            if (la.kind == 63) {
            Get();
            TypeName(out typeRef);
            lambda.ReturnType = typeRef;
            }
            if (StartOf(24)) {
            Expr(out inner);
            lambda.ExpressionBody = inner;
                lambda.EndLocation = t.EndLocation; // la.Location?

            } else if (la.kind == 1) {
            Get();
            Block(out statement);
            Expect(113);
            Expect(127);
            lambda.StatementBody = statement;
                lambda.EndLocation = t.EndLocation;

            } else SynErr(294);
        }
 public virtual object VisitLambdaExpression(LambdaExpression lambdaExpression, object data)
 {
     Debug.Assert((lambdaExpression != null));
     Debug.Assert((lambdaExpression.Parameters != null));
     Debug.Assert((lambdaExpression.StatementBody != null));
     Debug.Assert((lambdaExpression.ExpressionBody != null));
     Debug.Assert((lambdaExpression.ReturnType != null));
     for (int i = 0; i < lambdaExpression.Parameters.Count; i++) {
         ParameterDeclarationExpression o = lambdaExpression.Parameters[i];
         Debug.Assert(o != null);
         nodeStack.Push(o);
         o.AcceptVisitor(this, data);
         o = (ParameterDeclarationExpression)nodeStack.Pop();
         if (o == null)
             lambdaExpression.Parameters.RemoveAt(i--);
         else
             lambdaExpression.Parameters[i] = o;
     }
     nodeStack.Push(lambdaExpression.StatementBody);
     lambdaExpression.StatementBody.AcceptVisitor(this, data);
     lambdaExpression.StatementBody = ((Statement)(nodeStack.Pop()));
     nodeStack.Push(lambdaExpression.ExpressionBody);
     lambdaExpression.ExpressionBody.AcceptVisitor(this, data);
     lambdaExpression.ExpressionBody = ((Expression)(nodeStack.Pop()));
     nodeStack.Push(lambdaExpression.ReturnType);
     lambdaExpression.ReturnType.AcceptVisitor(this, data);
     lambdaExpression.ReturnType = ((TypeReference)(nodeStack.Pop()));
     return null;
 }