2 The classes in this module model the entire AST for the language.
4 The actual AST classes and supporting modules are generated
9 class CompileUnit(Node
):
10 Modules
as ModuleCollection
12 enum TypeMemberModifiers
:
27 enum MethodImplementationFlags
:
31 enum ParameterModifiers
:
37 enum ExceptionHandlerFlags
:
43 abstract class TypeMember(Node
, INodeWithAttributes
):
44 Modifiers
as TypeMemberModifiers
46 Attributes
as AttributeCollection
48 class ExplicitMemberInfo(Node
):
49 InterfaceType
as SimpleTypeReference
51 [collection(TypeMember
)]
52 class TypeMemberCollection
:
55 abstract class TypeReference(Node
):
58 class SimpleTypeReference(TypeReference
):
61 class ArrayTypeReference(TypeReference
):
62 ElementType
as TypeReference
63 Rank
as IntegerLiteralExpression
65 class CallableTypeReference(TypeReference
):
66 Parameters
as ParameterDeclarationCollection
67 ReturnType
as TypeReference
69 class GenericTypeReference(SimpleTypeReference
):
70 GenericArguments
as TypeReferenceCollection
72 class GenericTypeDefinitionReference(SimpleTypeReference
):
73 GenericPlaceholders
as int
75 [collection(TypeReference
)]
76 class TypeReferenceCollection
:
79 class CallableDefinition(TypeMember
, INodeWithParameters
):
80 Parameters
as ParameterDeclarationCollection
81 GenericParameters
as GenericParameterDeclarationCollection
82 ReturnType
as TypeReference
83 ReturnTypeAttributes
as AttributeCollection
85 abstract class TypeDefinition(TypeMember
):
86 Members
as TypeMemberCollection
87 BaseTypes
as TypeReferenceCollection
88 GenericParameters
as GenericParameterDeclarationCollection
90 [collection(TypeDefinition
)]
91 class TypeDefinitionCollection
:
94 class NamespaceDeclaration(Node
):
99 AssemblyReference
as ReferenceExpression
100 Alias
as ReferenceExpression
103 class ImportCollection
:
106 class Module(TypeDefinition
):
107 Namespace
as NamespaceDeclaration
108 Imports
as ImportCollection
111 AssemblyAttributes
as AttributeCollection
114 class ModuleCollection
:
117 class ClassDefinition(TypeDefinition
):
120 class StructDefinition(TypeDefinition
):
123 class InterfaceDefinition(TypeDefinition
):
126 class EnumDefinition(TypeDefinition
):
129 class EnumMember(TypeMember
):
130 Initializer
as IntegerLiteralExpression
132 class Field(TypeMember
):
133 Type
as TypeReference
134 Initializer
as Expression
136 class Property(TypeMember
, INodeWithParameters
, IExplicitMember
):
137 Parameters
as ParameterDeclarationCollection
140 Type
as TypeReference
141 ExplicitInfo
as ExplicitMemberInfo
143 class Event(TypeMember
):
147 Type
as TypeReference
153 class LocalCollection
:
156 class BlockExpression(Expression
, INodeWithParameters
):
157 Parameters
as ParameterDeclarationCollection
158 ReturnType
as TypeReference
162 class Method(CallableDefinition
, IExplicitMember
):
165 Locals
as LocalCollection
166 ImplementationFlags
as MethodImplementationFlags
167 ExplicitInfo
as ExplicitMemberInfo
169 class Constructor(Method
):
172 class Destructor(Method
):
175 class ParameterDeclaration(Node
, INodeWithAttributes
):
177 Type
as TypeReference
178 Modifiers
as ParameterModifiers
179 Attributes
as AttributeCollection
181 [collection(ParameterDeclaration
)]
182 class ParameterDeclarationCollection
:
185 class GenericParameterDeclaration(Node
):
188 [collection(GenericParameterDeclaration
)]
189 class GenericParameterDeclarationCollection
:
192 class Declaration(Node
):
194 Type
as TypeReference
196 [collection(Declaration
)]
197 class DeclarationCollection
:
200 class Attribute(Node
, INodeWithArguments
):
202 Arguments
as ExpressionCollection
203 NamedArguments
as ExpressionPairCollection
205 [collection(Attribute
)]
206 class AttributeCollection
:
209 enum StatementModifierType
:
215 class StatementModifier(Node
):
216 Type
as StatementModifierType
217 Condition
as Expression
219 abstract class Statement(Node
):
220 Modifier
as StatementModifier
222 class GotoStatement(Statement
):
223 Label
as ReferenceExpression
225 class LabelStatement(Statement
):
228 class Block(Statement
):
229 Statements
as StatementCollection
231 [collection(Statement
)]
232 class StatementCollection
:
235 class DeclarationStatement(Statement
):
236 Declaration
as Declaration
237 Initializer
as Expression
239 class MacroStatement(Statement
):
241 Arguments
as ExpressionCollection
246 class TryStatement(Statement
):
248 ProtectedBlock
as Block
249 ExceptionHandlers
as ExceptionHandlerCollection
250 FailureBlock
as Block
253 class ExceptionHandler(Node
):
254 Declaration
as Declaration
255 FilterCondition
as Expression
256 Flags
as ExceptionHandlerFlags
261 [collection(ExceptionHandler
)]
262 class ExceptionHandlerCollection
:
265 class IfStatement(Statement
):
266 Condition
as Expression
270 class UnlessStatement(Statement
):
271 Condition
as Expression
276 class ForStatement(Statement
):
277 Declarations
as DeclarationCollection
278 Iterator
as Expression
284 class WhileStatement(Statement
):
285 Condition
as Expression
291 class BreakStatement(Statement
):
294 class ContinueStatement(Statement
):
297 class ReturnStatement(Statement
):
298 Expression
as Expression
300 class YieldStatement(Statement
):
301 Expression
as Expression
303 class RaiseStatement(Statement
):
304 Exception
as Expression
306 class UnpackStatement(Statement
):
307 Declarations
as DeclarationCollection
308 Expression
as Expression
310 class ExpressionStatement(Statement
):
312 Expression
as Expression
314 abstract class Expression(Node
):
317 [collection(Expression
)]
318 class ExpressionCollection
:
322 class OmittedExpression(Expression
):
325 class ExpressionPair(Node
):
329 [collection(ExpressionPair
)]
330 class ExpressionPairCollection
:
333 class MethodInvocationExpression(Expression
, INodeWithArguments
):
335 Arguments
as ExpressionCollection
336 NamedArguments
as ExpressionPairCollection
338 enum BinaryOperatorType
:
377 enum UnaryOperatorType
:
388 class UnaryExpression(Expression
):
389 Operator
as UnaryOperatorType
390 Operand
as Expression
392 class BinaryExpression(Expression
):
393 Operator
as BinaryOperatorType
397 class ConditionalExpression(Expression
):
398 Condition
as Expression
399 TrueValue
as Expression
400 FalseValue
as Expression
402 class ReferenceExpression(Expression
):
405 class MemberReferenceExpression(ReferenceExpression
):
408 class GenericReferenceExpression(Expression
):
410 GenericArguments
as TypeReferenceCollection
412 abstract class LiteralExpression(Expression
):
415 class QuasiquoteExpression(LiteralExpression
):
418 class StringLiteralExpression(LiteralExpression
):
421 class CharLiteralExpression(StringLiteralExpression
):
424 class TimeSpanLiteralExpression(LiteralExpression
):
425 Value
as System
.TimeSpan
427 class IntegerLiteralExpression(LiteralExpression
):
431 class DoubleLiteralExpression(LiteralExpression
):
435 class NullLiteralExpression(LiteralExpression
):
438 class SelfLiteralExpression(LiteralExpression
):
441 class SuperLiteralExpression(LiteralExpression
):
444 class BoolLiteralExpression(LiteralExpression
):
447 class RELiteralExpression(LiteralExpression
):
450 class SpliceExpression(Expression
):
451 Expression
as Expression
453 class SpliceTypeReference(TypeReference
):
454 Expression
as Expression
456 class SpliceMemberReferenceExpression(Expression
):
458 NameExpression
as Expression
460 class SpliceTypeMember(TypeMember
):
461 TypeMember
as TypeMember
462 NameExpression
as Expression
464 class SpliceParameterDeclaration(ParameterDeclaration
):
465 ParameterDeclaration
as ParameterDeclaration
466 NameExpression
as Expression
468 class ExpressionInterpolationExpression(Expression
):
469 Expressions
as ExpressionCollection
471 class HashLiteralExpression(LiteralExpression
):
472 Items
as ExpressionPairCollection
474 class ListLiteralExpression(LiteralExpression
):
475 Items
as ExpressionCollection
477 class ArrayLiteralExpression(ListLiteralExpression
):
478 Type
as ArrayTypeReference
480 class GeneratorExpression(Expression
):
481 Expression
as Expression
482 Declarations
as DeclarationCollection
483 Iterator
as Expression
484 Filter
as StatementModifier
486 class ExtendedGeneratorExpression(Expression
):
487 Items
as GeneratorExpressionCollection
489 [collection(GeneratorExpression
)]
490 class GeneratorExpressionCollection
:
499 class SliceCollection
:
502 class SlicingExpression(Expression
):
504 Indices
as SliceCollection
506 class TryCastExpression(Expression
):
508 Type
as TypeReference
510 class CastExpression(Expression
):
512 Type
as TypeReference
514 class TypeofExpression(Expression
):
515 Type
as TypeReference