Exemple #1
0
			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;
			}
Exemple #2
0
			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;
			}
Exemple #3
0
			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;
			}