public virtual Expression VisitConstructTuple(ConstructTuple consTuple)
 {
     if (consTuple == null) return null;
     consTuple.Fields = this.VisitFieldList(consTuple.Fields);
     return consTuple;
 }
Beispiel #2
0
 private Expression ParseNewAnonymousTypeInstance(SourceContext ctx, TokenSet followers) {
   SourceContext sctx = this.scanner.CurrentSourceContext;
   Debug.Assert(this.currentToken == Token.LeftBrace);
   this.GetNextToken();
   ConstructTuple result = new ConstructTuple();
   FieldList fields = result.Fields = new FieldList();
   TokenSet followersOrCommaOrRightBrace = followers|Token.Comma|Token.RightBrace;
   while (Parser.UnaryStart[this.currentToken]) {
     Field f = new Field();
     fields.Add(f);
     f.Flags = FieldFlags.Public;
     f.SourceContext = this.scanner.CurrentSourceContext;
     Expression e = this.ParseUnaryExpression(followersOrCommaOrRightBrace|Parser.InfixOperators);
     if (this.currentToken == Token.Assign) {
       Identifier id = e as Identifier;
       if (id == null) {
         if (e != null)
           this.HandleError(e.SourceContext, Error.ExpectedIdentifier);
       } else {
         f.Name = id;
         this.GetNextToken();
         e = this.ParseExpression(followersOrCommaOrRightBrace);
       }
     } else {
       Identifier id = e as Identifier;
       if (id != null)
         f.Name = id;
       else {
         QualifiedIdentifier qualId = e as QualifiedIdentifier;
         if (qualId != null)
           f.Name = qualId.Identifier;
         else {
           //TODO: error message
         }
       }
     }
     f.Initializer = e;
     if (e != null) f.SourceContext.EndPos = e.SourceContext.EndPos;
     if (this.currentToken != Token.Comma) break;
     this.GetNextToken();
   }
   int endCol = this.scanner.endPos;
   this.ParseBracket(sctx, Token.RightBrace, followers, Error.ExpectedRightBracket);
   result.SourceContext = sctx;
   result.SourceContext.EndPos = endCol;
   return result;
 }
Beispiel #3
0
 public override Expression VisitConstructTuple(ConstructTuple consTuple)
 {
     if (consTuple == null) return null;
     return base.VisitConstructTuple((ConstructTuple)consTuple.Clone());
 }
 public EventingVisitor(Action<ConstructTuple> visitConstructTuple) { VisitedConstructTuple += visitConstructTuple; } public event Action<ConstructTuple> VisitedConstructTuple; public override Expression VisitConstructTuple(ConstructTuple consTuple) { if (VisitedConstructTuple != null) VisitedConstructTuple(consTuple); return base.VisitConstructTuple(consTuple); }