public override object Visit(Mono.CSharp.Linq.SelectMany selectMany) { var fromClause = new QueryFromClause(); fromClause.AddChild(new CSharpTokenNode(Convert(selectMany.Location), QueryFromClause.FromKeywordRole), QueryFromClause.FromKeywordRole); if (selectMany.IdentifierType != null) fromClause.AddChild(ConvertToType(selectMany.IdentifierType), Roles.Type); fromClause.AddChild(Identifier.Create(selectMany.IntoVariable.Name, Convert(selectMany.IntoVariable.Location)), Roles.Identifier); var location = LocationsBag.GetLocations(selectMany); if (location != null) fromClause.AddChild(new CSharpTokenNode(Convert(location [0]), QueryFromClause.InKeywordRole), QueryFromClause.InKeywordRole); if (selectMany.Expr != null) fromClause.AddChild((Expression)selectMany.Expr.Accept(this), Roles.Expression); return fromClause; }
public override object Visit (Mono.CSharp.Linq.SelectMany queryStart) { var fromClause = new QueryFromClause (); var location = LocationsBag.GetLocations (queryStart); fromClause.AddChild (new CSharpTokenNode (Convert (queryStart.Location), "from".Length), QueryFromClause.FromKeywordRole); if (queryStart.IdentifierType != null) fromClause.AddChild (ConvertToType (queryStart.IdentifierType), QueryFromClause.Roles.Type); fromClause.AddChild (new Identifier (queryStart.IntoVariable.Name, Convert (queryStart.IntoVariable.Location)), QueryFromClause.Roles.Identifier); if (location != null) fromClause.AddChild (new CSharpTokenNode (Convert (location [0]), "in".Length), QueryFromClause.InKeywordRole); fromClause.AddChild ((Expression)queryStart.Expr.Accept (this), QueryFromClause.Roles.Expression); return fromClause; }
public override object Visit(Mono.CSharp.Linq.QueryStartClause queryExpression) { if (queryExpression.Expr == null) { var intoClause = new QueryContinuationClause(); intoClause.AddChild(new CSharpTokenNode(Convert(queryExpression.Location), QueryContinuationClause.IntoKeywordRole), QueryContinuationClause.IntoKeywordRole); intoClause.AddChild(Identifier.Create(queryExpression.IntoVariable.Name, Convert(queryExpression.IntoVariable.Location)), Roles.Identifier); return intoClause; } var fromClause = new QueryFromClause(); fromClause.AddChild(new CSharpTokenNode(Convert(queryExpression.Location), QueryFromClause.FromKeywordRole), QueryFromClause.FromKeywordRole); if (queryExpression.IdentifierType != null) fromClause.AddChild(ConvertToType(queryExpression.IdentifierType), Roles.Type); fromClause.AddChild(Identifier.Create(queryExpression.IntoVariable.Name, Convert(queryExpression.IntoVariable.Location)), Roles.Identifier); var location = LocationsBag.GetLocations(queryExpression); if (location != null) fromClause.AddChild(new CSharpTokenNode(Convert(location [0]), QueryFromClause.InKeywordRole), QueryFromClause.InKeywordRole); if (queryExpression.Expr != null) fromClause.AddChild((Expression)queryExpression.Expr.Accept(this), Roles.Expression); return fromClause; }
/* public override object Visit (Mono.CSharp.Linq.Query queryExpression) { var result = new QueryFromClause (); var location = LocationsBag.GetLocations (queryExpression); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), "from".Length), QueryFromClause.FromKeywordRole); // TODO: select identifier if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[1]), "in".Length), QueryFromClause.InKeywordRole); var query = queryExpression.Expr as Mono.CSharp.Linq.AQueryClause; // if (query != null && query.Expr != null) // result.AddChild ((AstNode)query.Expr.Accept (this), QueryFromClause.Roles.Expression); return result; } */ public override object Visit (Mono.CSharp.Linq.SelectMany selectMany) { var result = new QueryFromClause (); // TODO: // Mono.CSharp.Linq.Cast cast = selectMany.Expr as Mono.CSharp.Linq.Cast; var location = LocationsBag.GetLocations (selectMany); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), "from".Length), QueryFromClause.FromKeywordRole); // result.AddChild ((AstNode)cast.TypeExpr.Accept (this), QueryFromClause.Roles.ReturnType); // if (cast != null) // result.AddChild (new Identifier (selectMany.SelectIdentifier.Value, Convert (selectMany.SelectIdentifier.Location)), QueryFromClause.Roles.Identifier); // result.AddChild (new CSharpTokenNode (Convert (location[1]), "in".Length), QueryFromClause.InKeywordRole); // result.AddChild ((AstNode)(cast != null ? cast.Expr : selectMany.Expr).Accept (this), QueryFromClause.Roles.Expression); return result; }