1993 lines
39 KiB
D
Executable File
1993 lines
39 KiB
D
Executable File
// Written in the D programming language.
|
|
|
|
/**
|
|
* This module defines an Abstract Syntax Tree for the D language
|
|
*/
|
|
|
|
module std.d.ast;
|
|
|
|
import std.d.lexer;
|
|
|
|
interface ASTVisitor
|
|
{
|
|
void visit(AddExpression addExpression);
|
|
void visit(AliasDeclaration aliasDeclaration);
|
|
void visit(AliasInitializer aliasInitializer);
|
|
void visit(AliasThisDeclaration aliasThisDeclaration);
|
|
void visit(AlignAttribute alignAttribute);
|
|
void visit(AndAndExpression andAndExpression);
|
|
void visit(AndExpression andExpression);
|
|
void visit(ArgumentList argumentList);
|
|
void visit(Arguments arguments);
|
|
void visit(ArrayInitializer arrayInitializer);
|
|
void visit(ArrayLiteral arrayLiteral);
|
|
void visit(ArrayMemberInitialization arrayMemberInitialization);
|
|
void visit(ArrayMemberInitializations arrayMemberInitializations);
|
|
void visit(AsmAddExp asmAddExp);
|
|
void visit(AsmAndExp asmAndExp);
|
|
void visit(AsmBrExp asmBrExp);
|
|
void visit(AsmEqualExp asmEqualExp);
|
|
void visit(AsmExp asmExp);
|
|
void visit(AsmInstruction asmInstruction);
|
|
void visit(AsmLogAndExp asmLogAndExp);
|
|
void visit(AsmLogOrExp asmLogOrExp);
|
|
void visit(AsmMulExp asmMulExp);
|
|
void visit(AsmOrExp asmOrExp);
|
|
void visit(AsmPrimaryExp asmPrimaryExp);
|
|
void visit(AsmRelExp asmRelExp);
|
|
void visit(AsmShiftExp asmShiftExp);
|
|
void visit(AsmStatement asmStatement);
|
|
void visit(AsmTypePrefix asmTypePrefix);
|
|
void visit(AsmUnaExp asmUnaExp);
|
|
void visit(AsmXorExp asmXorExp);
|
|
void visit(AssertExpression assertExpression);
|
|
void visit(AssertStatement assertStatement);
|
|
void visit(AssignExpression assignExpression);
|
|
void visit(AssignStatement assignStatement);
|
|
void visit(AssocArrayLiteral assocArrayLiteral);
|
|
void visit(AtAttribute atAttribute);
|
|
void visit(Attribute attribute);
|
|
void visit(AttributedDeclaration attributedDeclaration);
|
|
void visit(AutoDeclaration autoDeclaration);
|
|
void visit(BlockStatement blockStatement);
|
|
void visit(BodyStatement bodyStatement);
|
|
void visit(BreakStatement breakStatement);
|
|
void visit(BuiltinType builtinType);
|
|
void visit(CaseRangeStatement caseRangeStatement);
|
|
void visit(CaseStatement caseStatement);
|
|
void visit(CastExpression castExpression);
|
|
void visit(CastQualifier castQualifier);
|
|
void visit(Catch catch_);
|
|
void visit(Catches catches);
|
|
void visit(ClassBody classBody);
|
|
void visit(ClassDeclaration classDeclaration);
|
|
void visit(CmpExpression cmpExpression);
|
|
void visit(CompileCondition compileCondition);
|
|
void visit(ConditionalDeclaration conditionalDeclaration);
|
|
void visit(ConditionalStatement conditionalStatement);
|
|
void visit(Constraint constraint);
|
|
void visit(Constructor constructor);
|
|
void visit(ContinueStatement continueStatement);
|
|
void visit(DebugCondition debugCondition);
|
|
void visit(DebugSpecification debugSpecification);
|
|
void visit(Declaration declaration);
|
|
void visit(DeclarationsAndStatements declarationsAndStatements);
|
|
void visit(Declarator declarator);
|
|
void visit(DeclaratorSuffix declaratorSuffix);
|
|
void visit(DefaultStatement defaultStatement);
|
|
void visit(DeleteExpression deleteExpression);
|
|
void visit(DeleteStatement deleteStatement);
|
|
void visit(Deprecated deprecated_);
|
|
void visit(Destructor destructor);
|
|
void visit(DoStatement doStatement);
|
|
void visit(EnumBody enumBody);
|
|
void visit(EnumDeclaration enumDeclaration);
|
|
void visit(EnumMember enumMember);
|
|
void visit(EqualExpression equalExpression);
|
|
void visit(Expression expression);
|
|
void visit(FinalSwitchStatement finalSwitchStatement);
|
|
void visit(Finally finally_);
|
|
void visit(ForStatement forStatement);
|
|
void visit(ForeachRangeStatement foreachRangeStatement);
|
|
void visit(ForeachStatement foreachStatement);
|
|
void visit(ForeachType foreachType);
|
|
void visit(ForeachTypeList foreachTypeList);
|
|
void visit(FunctionAttribute functionAttribute);
|
|
void visit(FunctionBody functionBody);
|
|
void visit(FunctionCallExpression functionCallExpression);
|
|
void visit(FunctionCallStatement functionCallStatement);
|
|
void visit(FunctionDeclaration functionDeclaration);
|
|
void visit(FunctionLiteralExpression functionLiteralExpression);
|
|
void visit(GotoStatement gotoStatement);
|
|
void visit(IdentifierChain identifierChain);
|
|
void visit(IdentifierList identifierList);
|
|
void visit(IdentifierOrTemplateChain identifierOrTemplateChain);
|
|
void visit(IdentifierOrTemplateInstance identifierOrTemplateInstance);
|
|
void visit(IdentityExpression identityExpression);
|
|
void visit(IfStatement ifStatement);
|
|
void visit(ImportBind importBind);
|
|
void visit(ImportBindings importBindings);
|
|
void visit(ImportDeclaration importDeclaration);
|
|
void visit(ImportExpression importExpression);
|
|
void visit(ImportList importList);
|
|
void visit(InExpression inExpression);
|
|
void visit(InStatement inStatement);
|
|
void visit(Initialize initialize);
|
|
void visit(Initializer initializer);
|
|
void visit(InterfaceDeclaration interfaceDeclaration);
|
|
void visit(Invariant invariant_);
|
|
void visit(IsExpression isExpression);
|
|
void visit(KeyValuePair keyValuePair);
|
|
void visit(KeyValuePairs keyValuePairs);
|
|
void visit(LabeledStatement labeledStatement);
|
|
void visit(LambdaExpression lambdaExpression);
|
|
void visit(LastCatch lastCatch);
|
|
void visit(LinkageAttribute linkageAttribute);
|
|
void visit(MemberFunctionAttribute memberFunctionAttribute);
|
|
void visit(MixinDeclaration mixinDeclaration);
|
|
void visit(MixinExpression mixinExpression);
|
|
void visit(MixinTemplateName mixinTemplateName);
|
|
void visit(Module module_);
|
|
void visit(ModuleDeclaration moduleDeclaration);
|
|
void visit(MulExpression mulExpression);
|
|
void visit(NewAnonClassExpression newAnonClassExpression);
|
|
void visit(NewExpression newExpression);
|
|
void visit(NonEmptyStatement nonEmptyStatement);
|
|
void visit(NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault);
|
|
void visit(NonVoidInitializer nonVoidInitializer);
|
|
void visit(Opcode opcode);
|
|
void visit(Operand operand);
|
|
void visit(Operands operands);
|
|
void visit(OrExpression orExpression);
|
|
void visit(OrOrExpression orOrExpression);
|
|
void visit(OutStatement outStatement);
|
|
void visit(Parameter parameter);
|
|
void visit(ParameterAttribute parameterAttribute);
|
|
void visit(Parameters parameters);
|
|
void visit(PostIncDecExpression postIncDecExpression);
|
|
void visit(PowExpression powExpression);
|
|
void visit(PragmaDeclaration pragmaDeclaration);
|
|
void visit(PragmaExpression pragmaExpression);
|
|
void visit(PreIncDecExpression preIncDecExpression);
|
|
void visit(PrimaryExpression primaryExpression);
|
|
void visit(ProtectionAttribute protectionAttribute);
|
|
void visit(Register register);
|
|
void visit(RelExpression relExpression);
|
|
void visit(ReturnStatement returnStatement);
|
|
void visit(ScopeGuardStatement scopeGuardStatement);
|
|
void visit(SharedStaticConstructor sharedStaticConstructor);
|
|
void visit(SharedStaticDestructor sharedStaticDestructor);
|
|
void visit(ShiftExpression shiftExpression);
|
|
void visit(SingleImport singleImport);
|
|
void visit(Statement statement);
|
|
void visit(StatementNoCaseNoDefault statementNoCaseNoDefault);
|
|
void visit(StaticAssertDeclaration staticAssertDeclaration);
|
|
void visit(StaticAssertStatement staticAssertStatement);
|
|
void visit(StaticConstructor staticConstructor);
|
|
void visit(StaticDestructor staticDestructor);
|
|
void visit(StaticIfCondition staticIfCondition);
|
|
void visit(StorageClass storageClass);
|
|
void visit(StructBody structBody);
|
|
void visit(StructDeclaration structDeclaration);
|
|
void visit(StructInitializer structInitializer);
|
|
void visit(StructMemberInitializer structMemberInitializer);
|
|
void visit(StructMemberInitializers structMemberInitializers);
|
|
void visit(SwitchBody switchBody);
|
|
void visit(SwitchStatement switchStatement);
|
|
void visit(Symbol symbol);
|
|
void visit(SynchronizedStatement synchronizedStatement);
|
|
void visit(TemplateAliasParameter templateAliasParameter);
|
|
void visit(TemplateArgument templateArgument);
|
|
void visit(TemplateArgumentList templateArgumentList);
|
|
void visit(TemplateArguments templateArguments);
|
|
void visit(TemplateDeclaration templateDeclaration);
|
|
void visit(TemplateInstance templateInstance);
|
|
void visit(TemplateMixinStatement templateMixinStatement);
|
|
void visit(TemplateParameter templateParameter);
|
|
void visit(TemplateParameterList templateParameterList);
|
|
void visit(TemplateParameters templateParameters);
|
|
void visit(TemplateSingleArgument templateSingleArgument);
|
|
void visit(TemplateThisParameter templateThisParameter);
|
|
void visit(TemplateTupleParameter templateTupleParameter);
|
|
void visit(TemplateTypeParameter templateTypeParameter);
|
|
void visit(TemplateValueParameter templateValueParameter);
|
|
void visit(TemplateValueParameterDefault templateValueParameterDefault);
|
|
void visit(TernaryExpression ternaryExpression);
|
|
void visit(ThrowStatement throwStatement);
|
|
void visit(TraitsArgument traitsArgument);
|
|
void visit(TraitsExpression traitsExpression);
|
|
void visit(TryStatement tryStatement);
|
|
void visit(Type type);
|
|
void visit(Type2 type2);
|
|
void visit(Type3 type3);
|
|
void visit(TypeConstructor typeConstructor);
|
|
void visit(TypeConstructors typeConstructors);
|
|
void visit(TypeSpecialization typeSpecialization);
|
|
void visit(TypeSuffix typeSuffix);
|
|
void visit(TypeidExpression typeidExpression);
|
|
void visit(TypeofExpression typeofExpression);
|
|
void visit(UnaryExpression unaryExpression);
|
|
void visit(UnionDeclaration unionDeclaration);
|
|
void visit(Unittest unittest_);
|
|
void visit(VariableDeclaration variableDeclaration);
|
|
void visit(VersionCondition versionCondition);
|
|
void visit(VersionSpecification versionSpecification);
|
|
void visit(WhileStatement whileStatement);
|
|
void visit(WithStatement withStatement);
|
|
void visit(XorExpression xorExpression);
|
|
}
|
|
|
|
interface ASTNode
|
|
{
|
|
void accept(ASTVisitor visitor);
|
|
}
|
|
|
|
immutable string OVERRIDE_DEFAULT_ACCEPT = q{override void accept(ASTVisitor visitor) { visitor.visit(this); }};
|
|
immutable string DEFAULT_ACCEPT = q{void accept(ASTVisitor visitor) { visitor.visit(this); }};
|
|
|
|
|
|
immutable string SHIFT_SHIFT_BODY = q{
|
|
Token operator;
|
|
ShiftExpression left;
|
|
ShiftExpression right;
|
|
};
|
|
|
|
class AddExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token operator;
|
|
AddExpression addExpression;
|
|
MulExpression mulExpression;
|
|
}
|
|
|
|
class AliasDeclaration : Declaration
|
|
{
|
|
public:
|
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
|
Type type;
|
|
Declarator declarator;
|
|
AliasInitializer[] initializations;
|
|
}
|
|
|
|
class AliasInitializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Type type;
|
|
}
|
|
|
|
class AliasThisDeclaration : Declaration
|
|
{
|
|
public:
|
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
}
|
|
|
|
class AlignAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token integerLiteral;
|
|
}
|
|
|
|
class AndAndExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
OrExpression orExpression;
|
|
AndAndExpression andandExpression;
|
|
CmpExpression cmpExpression;
|
|
}
|
|
|
|
class AndExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AndExpression andExpression;
|
|
ShiftExpression shiftExpression;
|
|
}
|
|
|
|
class ArgumentList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression[] arguments;
|
|
}
|
|
|
|
class Arguments : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ArgumentList argumentList;
|
|
}
|
|
|
|
class ArrayInitializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ArrayMemberInitializations arrayMemberInitializations;
|
|
}
|
|
|
|
class ArrayLiteral : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ArgumentList argumentList;
|
|
}
|
|
|
|
class ArrayMemberInitialization : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
NonVoidInitializer nonVoidInitializer;
|
|
}
|
|
|
|
class ArrayMemberInitializations : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ArrayMemberInitialization[] arrayMemberInitializations;
|
|
}
|
|
|
|
class AsmAddExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token operator;
|
|
AsmMulExp left;
|
|
AsmMulExp right;
|
|
}
|
|
|
|
class AsmAndExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmEqualExp left;
|
|
AsmEqualExp right;
|
|
}
|
|
|
|
class AsmBrExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmBrExp asmBrExp;
|
|
AsmEqualExp asmEqualExp;
|
|
AsmUnaExp asmUnaExp;
|
|
}
|
|
|
|
class AsmEqualExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmRelExp left;
|
|
AsmRelExp right;
|
|
Token operator;
|
|
}
|
|
|
|
class AsmExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmLogOrExp left;
|
|
AsmExp middle;
|
|
AsmExp right;
|
|
}
|
|
|
|
class AsmInstruction : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifierOrInteger;
|
|
bool hasAlign;
|
|
AsmExp asmExp;
|
|
Opcode opcode;
|
|
Operands operands;
|
|
}
|
|
|
|
class AsmLogAndExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmOrExp left;
|
|
AsmOrExp right;
|
|
}
|
|
|
|
class AsmLogOrExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmLogAndExp left;
|
|
AsmLogAndExp right;
|
|
}
|
|
|
|
class AsmMulExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmBrExp left;
|
|
AsmBrExp right;
|
|
Token operator;
|
|
}
|
|
|
|
class AsmOrExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmXorExp left;
|
|
AsmXorExp right;
|
|
}
|
|
|
|
class AsmPrimaryExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
IdentifierChain identifierChain;
|
|
Register register;
|
|
Token token;
|
|
}
|
|
|
|
class AsmRelExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmShiftExp left;
|
|
AsmShiftExp right;
|
|
Token operator;
|
|
}
|
|
|
|
class AsmShiftExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmAddExp left;
|
|
AsmAddExp right;
|
|
Token operator;
|
|
}
|
|
|
|
class AsmStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmInstruction[] asmInstructions;
|
|
}
|
|
|
|
class AsmTypePrefix : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token left;
|
|
Token right;
|
|
}
|
|
|
|
class AsmUnaExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmTypePrefix asmTypePrefix;
|
|
AsmExp asmExp;
|
|
Token prefix;
|
|
AsmPrimaryExp asmPrimaryExp;
|
|
AsmUnaExp asmUnaExp;
|
|
}
|
|
|
|
class AsmXorExp : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmAndExp left;
|
|
AsmAndExp right;
|
|
}
|
|
|
|
class AssertExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assertion;
|
|
AssignExpression message;
|
|
}
|
|
|
|
class AssertStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssertExpression assertExpression;
|
|
}
|
|
|
|
class AssignExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TernaryExpression ternaryExpression;
|
|
AssignExpression assignExpression;
|
|
Token operator;
|
|
}
|
|
|
|
class AssignStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
PreIncDecExpression preIncDecExpression;
|
|
PostIncDecExpression postIncDecExpression;
|
|
UnaryExpression[] unaryExpressions;
|
|
AssignExpression[] assignExpressions;
|
|
Token[] assignOperators;
|
|
}
|
|
|
|
class AssocArrayLiteral : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
KeyValuePairs keyValuePairs;
|
|
}
|
|
|
|
class AtAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionCallExpression functionCallExpression;
|
|
ArgumentList argumentList;
|
|
Token identifier;
|
|
}
|
|
|
|
class AttributedDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Declaration[] declarations;
|
|
}
|
|
|
|
class Attribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
LinkageAttribute linkageAttribute;
|
|
AlignAttribute alignAttribute;
|
|
PragmaExpression pragmaExpression;
|
|
Deprecated deprecated_;
|
|
ProtectionAttribute protectionAttribute;
|
|
AtAttribute atAttribute;
|
|
Token attribute;
|
|
}
|
|
|
|
class AutoDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
StorageClass storageClass;
|
|
Token[] identifiers;
|
|
Initializer[] initializers;
|
|
}
|
|
|
|
class BlockStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
DeclarationsAndStatements declarationsAndStatements;
|
|
}
|
|
|
|
class BodyStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
DeclarationsAndStatements declarationsAndStatements;
|
|
}
|
|
|
|
class BreakStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
bool hasIdentifier;
|
|
}
|
|
|
|
class BuiltinType : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
}
|
|
|
|
class CaseRangeStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression low;
|
|
AssignExpression high;
|
|
DeclarationsAndStatements declarationsAndStatements;
|
|
}
|
|
|
|
class CaseStatement: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ArgumentList argumentList;
|
|
DeclarationsAndStatements declarationsAndStatements;
|
|
}
|
|
|
|
class CastExpression: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
CastQualifier castQualifier;
|
|
}
|
|
|
|
class CastQualifier: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token first;
|
|
Token second;
|
|
bool hasSecond;
|
|
}
|
|
|
|
class Catches: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Catch[] catches;
|
|
LastCatch lastCatch;
|
|
}
|
|
|
|
class Catch: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
Token identifier;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class ClassBody: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Declaration[] declarations;
|
|
Invariant[] invariants;
|
|
}
|
|
|
|
class ClassDeclaration: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token name;
|
|
TemplateParameters templateParameters;
|
|
Constraint constraint;
|
|
IdentifierList superClasses;
|
|
ClassBody classBody;
|
|
}
|
|
|
|
class CmpExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ShiftExpression shiftExpression;
|
|
EqualExpression equalExpression;
|
|
IdentityExpression identityExpression;
|
|
RelExpression relExpression;
|
|
InExpression inExpression;
|
|
}
|
|
|
|
class CompileCondition : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
VersionCondition versionCondition;
|
|
DebugCondition debugCondition;
|
|
StaticIfCondition staticIfCondition;
|
|
}
|
|
|
|
class ConditionalDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
CompileCondition compileCondition;
|
|
Declaration[] trueDeclarations;
|
|
Declaration[] falseDeclarations;
|
|
}
|
|
|
|
class ConditionalStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
CompileCondition compileCondition;
|
|
NonEmptyStatementNoCaseNoDefault trueStatement;
|
|
NonEmptyStatementNoCaseNoDefault falseStatement;
|
|
}
|
|
|
|
class Constraint : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
}
|
|
|
|
class Constructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Parameters parameters;
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class ContinueStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
bool hasIdentifier;
|
|
Token identifier;
|
|
}
|
|
|
|
class DebugCondition : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifierOrInteger;
|
|
bool hasIdentifierOrInteger;
|
|
}
|
|
|
|
class DebugSpecification : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifierOrInteger;
|
|
}
|
|
|
|
class Declaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AttributedDeclaration attributedDeclaration;
|
|
ImportDeclaration importDeclaration;
|
|
FunctionDeclaration functionDeclaration;
|
|
VariableDeclaration variableDeclaration;
|
|
AliasThisDeclaration aliasThisDeclaration;
|
|
StructDeclaration structDeclaration;
|
|
ClassDeclaration classDeclaration;
|
|
InterfaceDeclaration interfaceDeclaration;
|
|
UnionDeclaration unionDeclaration;
|
|
EnumDeclaration enumDeclaration;
|
|
AliasDeclaration aliasDeclaration;
|
|
MixinDeclaration mixinDeclaration;
|
|
Unittest unittest_;
|
|
StaticAssertDeclaration staticAssertDeclaration;
|
|
TemplateDeclaration templateDeclaration;
|
|
Constructor constructor;
|
|
Destructor destructor;
|
|
StaticConstructor staticConstructor;
|
|
StaticDestructor staticDestructor;
|
|
SharedStaticDestructor sharedStaticDestructor;
|
|
SharedStaticConstructor sharedStaticConstructor;
|
|
ConditionalDeclaration conditionalDeclaration;
|
|
PragmaDeclaration pragmaDeclaration;
|
|
}
|
|
|
|
class DeclarationsAndStatements : ASTNode
|
|
{
|
|
mixin(DEFAULT_ACCEPT);
|
|
ASTNode[] declarationsAndStatements;
|
|
}
|
|
|
|
class Declarator : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
DeclaratorSuffix declaratiorSuffix;
|
|
Initializer initializer;
|
|
}
|
|
|
|
class DeclaratorSuffix : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class DefaultStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
DeclarationsAndStatements declarationsAndStatements;
|
|
}
|
|
|
|
class DeleteExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
UnaryExpression unaryExpression;
|
|
}
|
|
|
|
class DeleteStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
DeleteExpression deleteExpression;
|
|
}
|
|
|
|
class Deprecated : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class Destructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class DoStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BlockStatement blockStatement;
|
|
Expression expression;
|
|
}
|
|
|
|
class EnumBody : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
EnumMember[] enumMembers;
|
|
}
|
|
|
|
class EnumDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Type type;
|
|
EnumBody enumBody;
|
|
}
|
|
|
|
class EnumMember : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Type type;
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class EqualExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
mixin(SHIFT_SHIFT_BODY);
|
|
}
|
|
|
|
class Expression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression[] assignExpressions;
|
|
}
|
|
|
|
class FinalSwitchStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
SwitchStatement switchStatement;
|
|
}
|
|
|
|
class Finally : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class ForStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Declaration initializationDeclaration;
|
|
Statement initializationStatement;
|
|
Expression test;
|
|
Expression increment;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class ForeachRangeStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ForeachType foreachType;
|
|
Expression lower;
|
|
Expression higher;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class ForeachStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token foreachType;
|
|
ForeachTypeList foreachTypeList;
|
|
Expression expression;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class ForeachType : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
bool isRef;
|
|
Type type;
|
|
Token identifier;
|
|
}
|
|
|
|
class ForeachTypeList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ForeachType[] foreachTypes;
|
|
}
|
|
|
|
class FunctionAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token pureOrNothrow;
|
|
AtAttribute atAttribute;
|
|
}
|
|
|
|
class FunctionBody : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BlockStatement blockStatement;
|
|
BodyStatement bodyStatement;
|
|
OutStatement outStatement;
|
|
InStatement inStatement;
|
|
}
|
|
|
|
class FunctionCallExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
UnaryExpression unaryExpression;
|
|
TemplateArguments templateArguments;
|
|
Arguments arguments;
|
|
}
|
|
|
|
class FunctionCallStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionCallExpression functionCallExpression;
|
|
}
|
|
|
|
class FunctionDeclaration : Declaration
|
|
{
|
|
public:
|
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
|
Type returnType;
|
|
Token name;
|
|
TemplateParameters templateParameters;
|
|
Parameters parameters;
|
|
Constraint constraint;
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class FunctionLiteralExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token functionOrDelegate;
|
|
Type type;
|
|
Parameters parameters;
|
|
FunctionAttribute[] functionAttributes;
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class GotoStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
Token identifier;
|
|
bool isDefault;
|
|
}
|
|
|
|
class IdentifierChain : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token[] identifiers;
|
|
}
|
|
|
|
class IdentifierList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token[] identifiers;
|
|
}
|
|
|
|
class IdentifierOrTemplateChain : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
IdentifierOrTemplateInstance[] identifiers;
|
|
}
|
|
|
|
class IdentifierOrTemplateInstance : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateInstance templateInstance;
|
|
}
|
|
|
|
class IdentityExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
mixin(SHIFT_SHIFT_BODY);
|
|
}
|
|
|
|
class IfStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
NonEmptyStatementNoCaseNoDefault thenStatement;
|
|
NonEmptyStatementNoCaseNoDefault elseStatement;
|
|
}
|
|
|
|
class ImportBind : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token left;
|
|
Token right;
|
|
}
|
|
|
|
class ImportBindings : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
SingleImport bind;
|
|
ImportBind[] ImportBinds;
|
|
}
|
|
|
|
class ImportDeclaration : Declaration
|
|
{
|
|
public:
|
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
|
bool isStatic;
|
|
ImportList importList;
|
|
}
|
|
|
|
class ImportExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class ImportList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
SingleImport singleImport;
|
|
ImportList next;
|
|
ImportBindings bindings;
|
|
}
|
|
|
|
class InExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
mixin(SHIFT_SHIFT_BODY);
|
|
}
|
|
|
|
class InStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BlockStatement blockStatement;
|
|
}
|
|
|
|
class Initialize : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class Initializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonVoidInitializer nonVoidInitializer;
|
|
}
|
|
|
|
class InterfaceDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateParameters templateParameters;
|
|
Constraint constraint;
|
|
IdentifierList identifierList;
|
|
StructBody structBody;
|
|
}
|
|
|
|
class Invariant : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BlockStatement blockStatement;
|
|
}
|
|
|
|
class IsExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
AssignExpression assignExpression;
|
|
Token identifier;
|
|
TypeSpecialization typeSpecialization;
|
|
TemplateParameterList templateParameterList;
|
|
Token equalsOrColon;
|
|
}
|
|
|
|
class KeyValuePair : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
KeyValuePair[] keyValuePairs;
|
|
}
|
|
|
|
class KeyValuePairs : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression key;
|
|
AssignExpression value;
|
|
}
|
|
|
|
class LabeledStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Statement statement;
|
|
}
|
|
|
|
class LambdaExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Parameters paramaters;
|
|
FunctionAttribute[] functionAttributes;
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class LastCatch : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class LinkageAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
bool hasPlusPlus;
|
|
}
|
|
|
|
class MemberFunctionAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
FunctionAttribute functionAttribute;
|
|
}
|
|
|
|
class MixinDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
MixinExpression mixinExpression;
|
|
}
|
|
|
|
class MixinExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class MixinTemplateName : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
bool hasDot;
|
|
IdentifierOrTemplateChain identifierOrTemplateChain;
|
|
TypeofExpression typeofExpression;
|
|
}
|
|
|
|
class Module : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ModuleDeclaration moduleDeclaration;
|
|
Declaration[] declarations;
|
|
}
|
|
|
|
class ModuleDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
IdentifierChain moduleName;
|
|
}
|
|
|
|
|
|
class MulExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token operator;
|
|
MulExpression mulExpression;
|
|
PowExpression powExpression;
|
|
}
|
|
|
|
class NewAnonClassExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Arguments allocatorArguments;
|
|
Arguments constructorArguments;
|
|
IdentifierList identifierList;
|
|
ClassBody classBody;
|
|
|
|
}
|
|
|
|
class NewExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
NewAnonClassExpression newAnonClassExpression;
|
|
Arguments arguments;
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class NonEmptyStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
CaseStatement caseStatement;
|
|
CaseRangeStatement caseRangeStatement;
|
|
DefaultStatement defaultStatement;
|
|
}
|
|
|
|
class NonEmptyStatementNoCaseNoDefault : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
LabeledStatement labeledStatement;
|
|
BlockStatement blockStatement;
|
|
AssignStatement assignStatement;
|
|
IfStatement ifStatement;
|
|
WhileStatement whileStatement;
|
|
DoStatement doStatement;
|
|
ForStatement forStatement;
|
|
ForeachStatement foreachStatement;
|
|
SwitchStatement switchStatement;
|
|
FinalSwitchStatement finalSwitchStatement;
|
|
ContinueStatement continueStatement;
|
|
BreakStatement breakStatement;
|
|
ReturnStatement returnStatement;
|
|
GotoStatement gotoStatement;
|
|
WithStatement withStatement;
|
|
SynchronizedStatement synchronizedStatement;
|
|
TryStatement tryStatement;
|
|
ThrowStatement throwStatement;
|
|
ScopeGuardStatement scopeGuardStatement;
|
|
AsmStatement asmStatement;
|
|
ForeachRangeStatement foreachRangeStatement;
|
|
ConditionalStatement conditionalStatement;
|
|
StaticAssertStatement staticAssertStatement;
|
|
AssertStatement assertStatement;
|
|
TemplateMixinStatement templateMixinStatement;
|
|
VersionSpecification versionSpecification;
|
|
DebugSpecification debugSpecification;
|
|
FunctionCallStatement functionCallStatement;
|
|
DeleteStatement deleteStatement;
|
|
}
|
|
|
|
class NonVoidInitializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
ArrayInitializer arrayInitializer;
|
|
StructInitializer structInitializer;
|
|
|
|
}
|
|
|
|
class Opcode : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
}
|
|
|
|
class Operand : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AsmExp asmExp;
|
|
}
|
|
|
|
class Operands : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Operand[] operands;
|
|
}
|
|
|
|
class OrExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
XorExpression xorExpression;
|
|
OrExpression orExpression;
|
|
}
|
|
|
|
class OrOrExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
OrOrExpression orOrExpression;
|
|
AndAndExpression andAndExpression;
|
|
}
|
|
|
|
class OutStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token parameter;
|
|
BlockStatement blockStatement;
|
|
}
|
|
|
|
class Parameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
ParameterAttribute[] paramaterAttributes;
|
|
Type type;
|
|
Token name;
|
|
bool vararg;
|
|
}
|
|
|
|
class ParameterAttribute: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token attribute;
|
|
TypeConstructor typeConstructor;
|
|
}
|
|
|
|
class Parameters : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Parameter[] paramaters;
|
|
bool hasVarargs;
|
|
}
|
|
|
|
class PostIncDecExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token operator;
|
|
UnaryExpression unaryExpression;
|
|
}
|
|
|
|
class PowExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
UnaryExpression unaryExpression;
|
|
PowExpression powExpression;
|
|
}
|
|
|
|
class PragmaDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
PragmaExpression pragmaExpression;
|
|
}
|
|
|
|
class PragmaExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
ArgumentList argumentList;
|
|
}
|
|
|
|
class PreIncDecExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token operator;
|
|
UnaryExpression unaryExpression;
|
|
}
|
|
|
|
class PrimaryExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token primary;
|
|
bool hasDot;
|
|
IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
|
Type type;
|
|
TypeofExpression typeofExpression;
|
|
TypeidExpression typeidExpression;
|
|
ArrayLiteral arrayLiteral;
|
|
AssocArrayLiteral assocArrayLiteral;
|
|
Expression expression;
|
|
IsExpression isExpression;
|
|
LambdaExpression lambdaExpression;
|
|
FunctionLiteralExpression functionLiteralExpression;
|
|
TraitsExpression traitsExpression;
|
|
MixinExpression mixinExpression;
|
|
ImportExpression importExpression;
|
|
}
|
|
|
|
class ProtectionAttribute : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token attribute;
|
|
}
|
|
|
|
class Register : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Token integerLiteral;
|
|
bool hasIntegerLiteral;
|
|
}
|
|
|
|
class RelExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
mixin(SHIFT_SHIFT_BODY);
|
|
}
|
|
|
|
class ReturnStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
}
|
|
|
|
class ScopeGuardStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class SharedStaticConstructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class SharedStaticDestructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class ShiftExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AddExpression addExpression;
|
|
ShiftExpression shiftExpression;
|
|
Token operator;
|
|
}
|
|
|
|
class SingleImport : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token rename;
|
|
IdentifierChain import_;
|
|
}
|
|
|
|
class Statement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatement nonEmptyStatement;
|
|
}
|
|
|
|
class StatementNoCaseNoDefault : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class StaticAssertDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
StaticAssertStatement staticAssertStatement;
|
|
}
|
|
|
|
class StaticAssertStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssertStatement assertStatement;
|
|
}
|
|
|
|
class StaticConstructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class StaticDestructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
FunctionBody functionBody;
|
|
}
|
|
|
|
class StaticIfCondition : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
}
|
|
|
|
class StorageClass : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AtAttribute atAttribute;
|
|
TypeConstructor typeConstructor;
|
|
Token storageClass;
|
|
}
|
|
|
|
class StructBody : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Declaration[] declarations;
|
|
}
|
|
|
|
class StructDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateParameters templateParameters;
|
|
Constraint constraint;
|
|
StructBody structBody;
|
|
}
|
|
|
|
class StructInitializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
StructMemberInitializers structMemberInitializers;
|
|
|
|
}
|
|
|
|
class StructMemberInitializer : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
bool hasIdentifier;
|
|
NonVoidInitializer nonVoidInitializer;
|
|
}
|
|
|
|
class StructMemberInitializers : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
StructMemberInitializer[] structMemberInitializers;
|
|
}
|
|
|
|
class SwitchBody : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Statement[] statements;
|
|
}
|
|
|
|
class SwitchStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
SwitchBody switchBody;
|
|
}
|
|
|
|
class Symbol : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
IdentifierOrTemplateChain identifierOrTemplateChain;
|
|
bool hasDot;
|
|
}
|
|
|
|
class SynchronizedStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
}
|
|
|
|
class TemplateAliasParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
Token identifier;
|
|
Type colonType;
|
|
Expression colonExpression;
|
|
Type assignType;
|
|
Expression assignExpression;
|
|
}
|
|
|
|
class TemplateArgument : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
AssignExpression assignExpression;
|
|
Symbol symbol;
|
|
}
|
|
|
|
class TemplateArgumentList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateArgument[] templateArguments;
|
|
}
|
|
|
|
class TemplateArguments : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateArgumentList templateArgumentList;
|
|
TemplateSingleArgument templateSingleArgument;
|
|
}
|
|
|
|
class TemplateDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateParameters templateParameters;
|
|
Constraint constraint;
|
|
Declaration[] declarations;
|
|
}
|
|
|
|
class TemplateInstance : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateArguments templateArguments;
|
|
}
|
|
|
|
class TemplateMixinStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateArguments templateArguments;
|
|
MixinTemplateName mixinTemplateName;
|
|
}
|
|
|
|
class TemplateParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateTypeParameter templateTypeParameter;
|
|
TemplateValueParameter templateValueParameter;
|
|
TemplateAliasParameter templateAliasParameter;
|
|
TemplateTupleParameter templateTupleParameter;
|
|
TemplateThisParameter templateThisParameter;
|
|
}
|
|
|
|
class TemplateParameterList : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateParameter[] templateParameters;
|
|
}
|
|
|
|
class TemplateParameters : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateParameterList templateParameterList;
|
|
}
|
|
|
|
class TemplateSingleArgument : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
BuiltinType builtinType;
|
|
}
|
|
|
|
class TemplateThisParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TemplateTypeParameter templateTypeParameter;
|
|
}
|
|
|
|
class TemplateTupleParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
}
|
|
|
|
class TemplateTypeParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
Type colonType;
|
|
Type assignType;
|
|
}
|
|
|
|
class TemplateValueParameter : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
Token identifier;
|
|
Expression expression;
|
|
TemplateValueParameterDefault templateValueParameterDefault;
|
|
}
|
|
|
|
class TemplateValueParameterDefault : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
Token token;
|
|
}
|
|
|
|
class TernaryExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
OrOrExpression orOrExpression;
|
|
Expression expression;
|
|
TernaryExpression ternaryExpression;
|
|
}
|
|
|
|
class ThrowStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
}
|
|
|
|
class TraitsArgument : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
AssignExpression assignExpression;
|
|
Type type;
|
|
}
|
|
|
|
class TraitsExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TraitsArgument[] traitsArguments;
|
|
}
|
|
|
|
class TryStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
NonEmptyStatementNoCaseNoDefault nonEmptyStatementNoCaseNoDefault;
|
|
Catches catches;
|
|
Finally finally_;
|
|
}
|
|
|
|
class Type : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TypeConstructors typeConstructors;
|
|
Type2 type2;
|
|
}
|
|
|
|
class Type2 : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type2 type2;
|
|
Type3 type3;
|
|
TypeSuffix typeSuffix;
|
|
}
|
|
|
|
class Type3 : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BuiltinType builtinType;
|
|
Symbol symbol;
|
|
TypeofExpression typeofExpression;
|
|
IdentifierOrTemplateChain identifierOrTemplateChain;
|
|
TypeConstructor typeConstructor;
|
|
Type type;
|
|
}
|
|
|
|
class TypeConstructor : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token typeConstructor;
|
|
}
|
|
|
|
class TypeConstructors : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
TypeConstructor[] typeConstructors;
|
|
}
|
|
|
|
class TypeSpecialization : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
Type type;
|
|
}
|
|
|
|
class TypeSuffix : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token delegateOrFunction;
|
|
bool star;
|
|
Type type;
|
|
AssignExpression assignExpression;
|
|
MemberFunctionAttribute[] memberFunctionAttributes;
|
|
}
|
|
|
|
class TypeidExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Type type;
|
|
Expression expression;
|
|
}
|
|
|
|
class TypeofExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
Token return_;
|
|
}
|
|
|
|
class UnaryExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
PrimaryExpression primaryExpression;
|
|
UnaryExpression unaryExpression;
|
|
Token prefix;
|
|
PreIncDecExpression preIncDecExpression;
|
|
PostIncDecExpression postIncDecExpression;
|
|
NewExpression newExpression;
|
|
DeleteExpression deleteExpression;
|
|
CastExpression castExpression;
|
|
FunctionCallExpression functionCallExpression;
|
|
ArgumentList argumentList;
|
|
AssignExpression low;
|
|
AssignExpression high;
|
|
IdentifierOrTemplateInstance identifierOrTemplateInstance;
|
|
AssertExpression assertExpression;
|
|
}
|
|
|
|
class UnionDeclaration : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token identifier;
|
|
TemplateParameters templateParameters;
|
|
Constraint constraint;
|
|
StructBody structBody;
|
|
}
|
|
|
|
class Unittest : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
BlockStatement blockStatement;
|
|
}
|
|
|
|
class VariableDeclaration : Declaration
|
|
{
|
|
public:
|
|
mixin(OVERRIDE_DEFAULT_ACCEPT);
|
|
Type type;
|
|
Declarator[] declarators;
|
|
StorageClass storageClass;
|
|
AutoDeclaration autoDeclaration;
|
|
}
|
|
|
|
class VersionCondition : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
}
|
|
|
|
class VersionSpecification : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Token token;
|
|
}
|
|
|
|
class WhileStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
StatementNoCaseNoDefault statementNoCaseNoDefault;
|
|
}
|
|
|
|
class WithStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
Expression expression;
|
|
Symbol symbol;
|
|
TemplateInstance templateInstance;
|
|
}
|
|
|
|
class XorExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
XorExpression xorExpression;
|
|
AndExpression andExpression;
|
|
}
|