2248 lines
45 KiB
D
Executable File
2248 lines
45 KiB
D
Executable File
// Written in the D programming language.
|
|
|
|
/**
|
|
* This module defines an Abstract Syntax Tree for the D language
|
|
*
|
|
* Examples:
|
|
* ---
|
|
* // TODO
|
|
* ---
|
|
*
|
|
* Copyright: Brian Schott 2013
|
|
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt Boost, License 1.0)
|
|
* Authors: Brian Schott
|
|
* Source: $(PHOBOSSRC std/d/_ast.d)
|
|
*/
|
|
|
|
module std.d.ast;
|
|
|
|
import std.d.lexer;
|
|
|
|
/**
|
|
* Implements the $(LINK2 http://en.wikipedia.org/wiki/Visitor_pattern, Visitor Pattern)
|
|
* for the various AST ///
|
|
classes
|
|
*/
|
|
abstract ///
|
|
class 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(BasicType 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(DeclarationOrInvariant declarationOrInvariant) {}
|
|
/** */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(IndexExpression indexExpression) {}
|
|
/** */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(SliceExpression sliceExpression) {}
|
|
/** */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);
|
|
/** */TokenType operator;
|
|
/** */AddExpression left;
|
|
/** */MulExpression right;
|
|
}
|
|
|
|
///
|
|
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 intLiteral;
|
|
}
|
|
|
|
///
|
|
class AndAndExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */AndAndExpression left;
|
|
/** */OrExpression right;
|
|
}
|
|
|
|
///
|
|
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);
|
|
/** */Attribute attribute;
|
|
/** */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);
|
|
/** */BlockStatement blockStatement;
|
|
}
|
|
|
|
///
|
|
class BreakStatement : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */Token identifier;
|
|
/** */bool hasIdentifier;
|
|
}
|
|
|
|
///
|
|
class BasicType : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */TokenType type;
|
|
}
|
|
|
|
///
|
|
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;
|
|
/** */UnaryExpression unaryExpression;
|
|
}
|
|
|
|
///
|
|
class CastQualifier: ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */TokenType first;
|
|
/** */TokenType 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);
|
|
/** */DeclarationOrInvariant[] declarationOrInvariants;
|
|
}
|
|
|
|
///
|
|
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 DeclarationOrInvariant : ASTNode
|
|
{
|
|
mixin(DEFAULT_ACCEPT);
|
|
Declaration declaration;
|
|
Invariant invariant_;
|
|
}
|
|
|
|
///
|
|
class Declarator : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */ Token identifier;
|
|
/** */ DeclaratorSuffix declaratorSuffix;
|
|
/** */ 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 IndexExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */ UnaryExpression unaryExpression;
|
|
/** */ ArgumentList argumentList;
|
|
}
|
|
|
|
///
|
|
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);
|
|
Token identifier;
|
|
/** */ 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;
|
|
/** */ UnaryExpression left;
|
|
/** */ UnaryExpression right;
|
|
}
|
|
|
|
///
|
|
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 SliceExpression : ASTNode
|
|
{
|
|
public:
|
|
mixin(DEFAULT_ACCEPT);
|
|
/** */ AssignExpression lower;
|
|
/** */ AssignExpression upper;
|
|
}
|
|
|
|
///
|
|
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;
|
|
/** */ BasicType 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);
|
|
/** */ BasicType 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 left;
|
|
/** */ AndExpression right;
|
|
}
|