// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; using System.Collections.Generic; namespace VBDomGenerator.Dom { [CustomImplementation] abstract class Expression : AbstractNode, INullable {} [CustomImplementation] class PrimitiveExpression : Expression {} enum ParameterModifiers { In } enum QueryExpressionPartitionType { } class ParameterDeclarationExpression : Expression { List attributes; [QuestionMarkDefault] string parameterName; TypeReference typeReference; ParameterModifiers paramModifier; Expression defaultValue; public ParameterDeclarationExpression(TypeReference typeReference, string parameterName) {} public ParameterDeclarationExpression(TypeReference typeReference, string parameterName, ParameterModifiers paramModifier) {} public ParameterDeclarationExpression(TypeReference typeReference, string parameterName, ParameterModifiers paramModifier, Expression defaultValue) {} } class NamedArgumentExpression : Expression { string name; Expression expression; public NamedArgumentExpression() { } public NamedArgumentExpression(string name, Expression expression) {} } class MemberInitializerExpression : Expression { string name; bool isKey; Expression expression; public MemberInitializerExpression() { } public MemberInitializerExpression(string name, Expression expression) {} } [IncludeBoolProperty("IsAnonymousType", "return createType.IsNull || string.IsNullOrEmpty(createType.Type);")] class ObjectCreateExpression : Expression { TypeReference createType; List parameters; CollectionInitializerExpression objectInitializer; public ObjectCreateExpression(TypeReference createType, List parameters) {} } [IncludeBoolProperty("IsImplicitlyTyped", "return createType.IsNull || string.IsNullOrEmpty(createType.Type);")] class ArrayCreateExpression : Expression { TypeReference createType; List arguments; CollectionInitializerExpression arrayInitializer; public ArrayCreateExpression(TypeReference createType) {} public ArrayCreateExpression(TypeReference createType, List arguments) {} public ArrayCreateExpression(TypeReference createType, CollectionInitializerExpression arrayInitializer) {} } [ImplementNullable(NullableImplementation.Shadow)] class CollectionInitializerExpression : Expression { List createExpressions; public CollectionInitializerExpression() {} public CollectionInitializerExpression(List createExpressions) {} } enum AssignmentOperatorType {} class AssignmentExpression : Expression { Expression left; AssignmentOperatorType op; Expression right; public AssignmentExpression(Expression left, AssignmentOperatorType op, Expression right) {} } class BaseReferenceExpression : Expression {} enum BinaryOperatorType {} class BinaryOperatorExpression : Expression { Expression left; BinaryOperatorType op; Expression right; public BinaryOperatorExpression() { } public BinaryOperatorExpression(Expression left, BinaryOperatorType op, Expression right) {} } enum CastType {} class CastExpression : Expression { TypeReference castTo; Expression expression; CastType castType; public CastExpression(TypeReference castTo) {} public CastExpression(TypeReference castTo, Expression expression, CastType castType) {} } class MemberReferenceExpression : Expression { Expression targetObject; string memberName; List typeArguments; public MemberReferenceExpression(Expression targetObject, string memberName) {} } class IdentifierExpression : Expression { string identifier; List typeArguments; public IdentifierExpression(string identifier) {} } class InvocationExpression : Expression { Expression targetObject; List arguments; public InvocationExpression(Expression targetObject) {} public InvocationExpression(Expression targetObject, List arguments) {} } class ParenthesizedExpression : Expression { Expression expression; public ParenthesizedExpression(Expression expression) {} } class ThisReferenceExpression : Expression {} class TypeOfExpression : Expression { TypeReference typeReference; public TypeOfExpression(TypeReference typeReference) {} } class TypeReferenceExpression : Expression { TypeReference typeReference; public TypeReferenceExpression(TypeReference typeReference) {} } enum UnaryOperatorType {} class UnaryOperatorExpression : Expression { UnaryOperatorType op; Expression expression; public UnaryOperatorExpression(UnaryOperatorType op) {} public UnaryOperatorExpression(Expression expression, UnaryOperatorType op) {} } [IncludeMember("public Location ExtendedEndLocation { get; set; }")] class LambdaExpression : Expression { List parameters; Statement statementBody; Expression expressionBody; TypeReference returnType; } class ConditionalExpression : Expression { Expression condition; Expression trueExpression; Expression falseExpression; public ConditionalExpression() { } public ConditionalExpression(Expression condition, Expression trueExpression, Expression falseExpression) {} } class DefaultValueExpression : Expression { TypeReference typeReference; public DefaultValueExpression(TypeReference typeReference) {} } enum FieldDirection {} class DirectionExpression : Expression { FieldDirection fieldDirection; Expression expression; public DirectionExpression(FieldDirection fieldDirection, Expression expression) {} } class AddressOfExpression : Expression { Expression expression; public AddressOfExpression(Expression expression) {} } class ClassReferenceExpression : Expression {} class TypeOfIsExpression : Expression { Expression expression; TypeReference typeReference; public TypeOfIsExpression(Expression expression, TypeReference typeReference) {} } class QueryExpression : Expression { List clauses; } [ImplementNullable] abstract class QueryExpressionClause : AbstractNode, INullable { } class QueryExpressionWhereClause : QueryExpressionClause { Expression condition; } class QueryExpressionLetClause : QueryExpressionClause { [QuestionMarkDefault] string identifier; Expression expression; } [ImplementNullable(NullableImplementation.Shadow)] class QueryExpressionFromClause : QueryExpressionClause { List sources; } class QueryExpressionAggregateClause : QueryExpressionClause { CollectionRangeVariable source; List middleClauses; List intoVariables; } [ImplementNullable] class ExpressionRangeVariable : AbstractNode, INullable { string identifier; Expression expression; TypeReference type; } [ImplementNullable] class CollectionRangeVariable : AbstractNode, INullable { string identifier; Expression expression; TypeReference type; } class QueryExpressionJoinClause : QueryExpressionClause { Expression onExpression; Expression equalsExpression; CollectionRangeVariable source; string intoIdentifier; } [ImplementNullable(NullableImplementation.Shadow)] class QueryExpressionJoinVBClause : QueryExpressionClause { CollectionRangeVariable joinVariable; QueryExpressionJoinVBClause subJoin; List conditions; } class QueryExpressionPartitionVBClause : QueryExpressionClause { Expression expression; QueryExpressionPartitionType partitionType; } class QueryExpressionJoinConditionVB : AbstractNode { Expression leftSide; Expression rightSide; } class QueryExpressionOrderClause : QueryExpressionClause { List orderings; } class QueryExpressionOrdering : AbstractNode { Expression criteria; QueryExpressionOrderingDirection direction; } enum QueryExpressionOrderingDirection { None, Ascending, Descending } class QueryExpressionSelectClause : QueryExpressionClause { Expression projection; } class QueryExpressionSelectVBClause : QueryExpressionClause { List variables; } class QueryExpressionLetVBClause : QueryExpressionClause { List variables; } class QueryExpressionDistinctClause : QueryExpressionClause { } class QueryExpressionGroupClause : QueryExpressionClause { Expression projection; Expression groupBy; } class QueryExpressionGroupVBClause : QueryExpressionClause { List groupVariables; List byVariables; List intoVariables; } class QueryExpressionGroupJoinVBClause : QueryExpressionClause { QueryExpressionJoinVBClause joinClause; List intoVariables; } enum XmlAxisType { } class XmlMemberAccessExpression : Expression { Expression targetObject; XmlAxisType axisType; bool isXmlIdentifier; string identifier; public XmlMemberAccessExpression(Expression targetObject, XmlAxisType axisType, string identifier, bool isXmlIdentifier) {} } abstract class XmlExpression : Expression { } class XmlDocumentExpression : XmlExpression { List expressions; } enum XmlContentType { } class XmlContentExpression : XmlExpression { string content; XmlContentType type; public XmlContentExpression(string content, XmlContentType type) {} } class XmlEmbeddedExpression : XmlExpression { Expression inlineVBExpression; } [IncludeBoolProperty("IsExpression", "return !content.IsNull;")] [IncludeBoolProperty("NameIsExpression", "return !nameExpression.IsNull;")] [HasChildren] class XmlElementExpression : XmlExpression { Expression content; Expression nameExpression; string xmlName; List attributes; } [IncludeBoolProperty("IsLiteralValue", "return expressionValue.IsNull;")] class XmlAttributeExpression : XmlExpression { string name; string literalValue; bool useDoubleQuotes; Expression expressionValue; } }