dparse.ast

This module defines an Abstract Syntax Tree for the D language

Examples

// TODO
class AddExpression AliasAssign AliasDeclaration AliasInitializer AliasThisDeclaration AlignAttribute AndAndExpression AndExpression AnonymousEnumDeclaration AnonymousEnumMember ArgumentList Arguments ArrayInitializer ArrayLiteral ArrayMemberInitialization AsmAddExp AsmAndExp AsmBrExp AsmEqualExp AsmExp AsmInstruction AsmLogAndExp AsmLogOrExp AsmMulExp AsmOrExp AsmPrimaryExp AsmRelExp AsmShiftExp AsmStatement AsmTypePrefix AsmUnaExp AsmXorExp AssertArguments AssertExpression AssignExpression AssocArrayLiteral ASTVisitor AtAttribute Attribute AttributeDeclaration AutoDeclaration AutoDeclarationPart BaseClass BaseClassList BaseNode BitfieldWidth BlockStatement BreakStatement CaseRangeStatement CaseStatement CastExpression CastQualifier Catch Catches ClassDeclaration CmpExpression CompileCondition ConditionalDeclaration ConditionalStatement Constraint Constructor ContinueStatement DebugCondition DebugSpecification Declaration DeclarationOrStatement DeclarationsAndStatements Declarator DeclaratorIdentifierList DefaultStatement DeleteExpression DeleteStatement Deprecated Destructor DoStatement EnumBody EnumDeclaration EnumMember EnumMemberAttribute EponymousTemplateDeclaration EqualExpression Expression ExpressionNode ExpressionStatement Finally FinalSwitchStatement Foreach ForeachType ForeachTypeList ForStatement FunctionAttribute FunctionBody FunctionCallExpression FunctionContract FunctionDeclaration FunctionLiteralExpression GccAsmInstruction GccAsmOperand GccAsmOperandList GotoStatement IdentifierChain IdentifierOrTemplateChain IdentifierOrTemplateInstance IdentityExpression IfCondition IfStatement ImportBind ImportBindings ImportDeclaration ImportExpression InContractExpression Index IndexExpression InExpression Initialize Initializer InOutContractExpression InOutStatement InStatement InterfaceDeclaration InterpolatedString InterpolatedStringExpression InterpolatedStringPart InterpolatedStringText Invariant IsExpression KeyValuePair KeyValuePairs LabeledStatement LastCatch LinkageAttribute MemberFunctionAttribute MissingFunctionBody MixinDeclaration MixinExpression MixinTemplateDeclaration MixinTemplateName Module ModuleDeclaration MulExpression NamedArgument NamedArgumentList NamedTemplateArgument NamedTemplateArgumentList NamespaceList NewAnonClassExpression NewExpression NonVoidInitializer Operands OrExpression OrOrExpression OutContractExpression OutStatement Parameter ParameterAttribute Parameters Postblit PowExpression PragmaDeclaration PragmaExpression PragmaStatement PrimaryExpression Register RelExpression ReturnStatement ScopeGuardStatement SharedStaticConstructor SharedStaticDestructor ShiftExpression ShortenedFunctionBody SingleImport SpecifiedFunctionBody Statement StatementNoCaseNoDefault StaticAssertDeclaration StaticAssertStatement StaticConstructor StaticDestructor StaticForeachStatement StaticIfCondition StorageClass StringLiteralList StructBody StructDeclaration StructInitializer StructMemberInitializer StructMemberInitializers SwitchStatement Symbol SynchronizedStatement TemplateAliasParameter TemplateArgument TemplateArgumentList TemplateArguments TemplateDeclaration TemplateInstance TemplateMixinExpression TemplateParameter TemplateParameterList TemplateParameters TemplateSingleArgument TemplateThisParameter TemplateTupleParameter TemplateTypeParameter TemplateValueParameter TemplateValueParameterDefault TernaryExpression ThrowExpression TraitsExpression TryStatement Type Type2 TypeIdentifierPart TypeidExpression TypeofExpression TypeSpecialization TypeSuffix UnaryExpression UnionDeclaration Unittest VariableDeclaration Vector VersionCondition VersionSpecification WhileStatement WithStatement XorExpression
iface ASTNode

Module Initializers 1

shared static this()

Types 233

Describes which syntax was used in a list of declarations in the containing AST node

singleA declaration directly after the containing AST node making it the only child
colonA colon (`:`) was used in the containing AST node meaning all following declarations are part here.
blockThe declarations have been specified in a block denoted by starting `{` and ending `}` tokens.

Implements the Visitor Pattern for the various AST classes

Methods
void visit(const ExpressionNode n)
void dynamicDispatch(const ExpressionNode n)Looks at the runtime type of `n`, then calls the appropriate `visit` method at runtime.
void visit(const AddExpression addExpression)
void visit(const AliasDeclaration aliasDeclaration)
void visit(const AliasAssign aliasAssign)
void visit(const AliasInitializer aliasInitializer)
void visit(const AliasThisDeclaration aliasThisDeclaration)
void visit(const AlignAttribute alignAttribute)
void visit(const AndAndExpression andAndExpression)
void visit(const AndExpression andExpression)
void visit(const AnonymousEnumDeclaration anonymousEnumDeclaration)
void visit(const AnonymousEnumMember anonymousEnumMember)
void visit(const ArgumentList argumentList)
void visit(const Arguments arguments)
void visit(const ArrayInitializer arrayInitializer)
void visit(const ArrayLiteral arrayLiteral)
void visit(const ArrayMemberInitialization arrayMemberInitialization)
void visit(const AsmAddExp asmAddExp)
void visit(const AsmAndExp asmAndExp)
void visit(const AsmBrExp asmBrExp)
void visit(const AsmEqualExp asmEqualExp)
void visit(const AsmExp asmExp)
void visit(const AsmInstruction asmInstruction)
void visit(const AsmLogAndExp asmLogAndExp)
void visit(const AsmLogOrExp asmLogOrExp)
void visit(const AsmMulExp asmMulExp)
void visit(const AsmOrExp asmOrExp)
void visit(const AsmPrimaryExp asmPrimaryExp)
void visit(const AsmRelExp asmRelExp)
void visit(const AsmShiftExp asmShiftExp)
void visit(const AsmStatement asmStatement)
void visit(const AsmTypePrefix asmTypePrefix)
void visit(const AsmUnaExp asmUnaExp)
void visit(const AsmXorExp asmXorExp)
void visit(const AssertArguments assertArguments)
void visit(const AssertExpression assertExpression)
void visit(const AssignExpression assignExpression)
void visit(const AssocArrayLiteral assocArrayLiteral)
void visit(const AtAttribute atAttribute)
void visit(const Attribute attribute)
void visit(const AttributeDeclaration attributeDeclaration)
void visit(const AutoDeclaration autoDeclaration)
void visit(const AutoDeclarationPart autoDeclarationPart)
void visit(const BlockStatement blockStatement)
void visit(const BreakStatement breakStatement)
void visit(const BaseClass baseClass)
void visit(const BaseClassList baseClassList)
void visit(const BitfieldWidth bitfieldWidth)
void visit(const CaseRangeStatement caseRangeStatement)
void visit(const CaseStatement caseStatement)
void visit(const CastExpression castExpression)
void visit(const CastQualifier castQualifier)
void visit(const Catch catch_)
void visit(const Catches catches)
void visit(const ClassDeclaration classDeclaration)
void visit(const CmpExpression cmpExpression)
void visit(const CompileCondition compileCondition)
void visit(const ConditionalDeclaration conditionalDeclaration)
void visit(const ConditionalStatement conditionalStatement)
void visit(const Constraint constraint)
void visit(const Constructor constructor)
void visit(const ContinueStatement continueStatement)
void visit(const DebugCondition debugCondition)
void visit(const DebugSpecification debugSpecification)
void visit(const Declaration declaration)
void visit(const DeclarationOrStatement declarationsOrStatement)
void visit(const DeclarationsAndStatements declarationsAndStatements)
void visit(const Declarator declarator)
void visit(const DefaultStatement defaultStatement)
void visit(const DeleteExpression deleteExpression)
void visit(const DeleteStatement deleteStatement)
void visit(const Deprecated deprecated_)
void visit(const Destructor destructor)
void visit(const DoStatement doStatement)
void visit(const EnumBody enumBody)
void visit(const EnumDeclaration enumDeclaration)
void visit(const EnumMember enumMember)
void visit(const EnumMemberAttribute enumMemberAttribute)
void visit(const EponymousTemplateDeclaration eponymousTemplateDeclaration)
void visit(const EqualExpression equalExpression)
void visit(const Expression expression)
void visit(const ExpressionStatement expressionStatement)
void visit(const FinalSwitchStatement finalSwitchStatement)
void visit(const Finally finally_)
void visit(const ForStatement forStatement)
void visit(const ForeachStatement foreachStatement)
void visit(const StaticForeachDeclaration staticForeachDeclaration)
void visit(const StaticForeachStatement staticForeachStatement)
void visit(const ForeachType foreachType)
void visit(const ForeachTypeList foreachTypeList)
void visit(const FunctionAttribute functionAttribute)
void visit(const FunctionBody functionBody)
void visit(const FunctionCallExpression functionCallExpression)
void visit(const FunctionContract functionContract)
void visit(const FunctionDeclaration functionDeclaration)
void visit(const FunctionLiteralExpression functionLiteralExpression)
void visit(const GccAsmInstruction gccAsmInstruction)
void visit(const GccAsmOperandList gccAsmOperands)
void visit(const GccAsmOperand gccAsmOperand)
void visit(const GotoStatement gotoStatement)
void visit(const IdentifierChain identifierChain)
void visit(const DeclaratorIdentifierList identifierList)
void visit(const IdentifierOrTemplateChain identifierOrTemplateChain)
void visit(const IdentifierOrTemplateInstance identifierOrTemplateInstance)
void visit(const IdentityExpression identityExpression)
void visit(const IfStatement ifStatement)
void visit(const IfCondition ifCondition)
void visit(const ImportBind importBind)
void visit(const ImportBindings importBindings)
void visit(const ImportDeclaration importDeclaration)
void visit(const ImportExpression importExpression)
void visit(const IndexExpression indexExpression)
void visit(const InContractExpression inContractExpression)
void visit(const InExpression inExpression)
void visit(const InOutContractExpression inOutContractExpression)
void visit(const InOutStatement inOutStatement)
void visit(const InStatement inStatement)
void visit(const Initialize initialize)
void visit(const Initializer initializer)
void visit(const InterfaceDeclaration interfaceDeclaration)
void visit(const InterpolatedString interpolatedString)
void visit(const InterpolatedStringExpression interpolatedStringExpression)
void visit(const InterpolatedStringText interpolatedStringText)
void visit(const Invariant invariant_)
void visit(const IsExpression isExpression)
void visit(const KeyValuePair keyValuePair)
void visit(const KeyValuePairs keyValuePairs)
void visit(const LabeledStatement labeledStatement)
void visit(const LastCatch lastCatch)
void visit(const LinkageAttribute linkageAttribute)
void visit(const MemberFunctionAttribute memberFunctionAttribute)
void visit(const MissingFunctionBody missingFunctionBody)
void visit(const MixinDeclaration mixinDeclaration)
void visit(const MixinExpression mixinExpression)
void visit(const MixinTemplateDeclaration mixinTemplateDeclaration)
void visit(const MixinTemplateName mixinTemplateName)
void visit(const Module module_)
void visit(const ModuleDeclaration moduleDeclaration)
void visit(const MulExpression mulExpression)
void visit(const NamedArgument argument)
void visit(const NamedArgumentList argument)
void visit(const NamedTemplateArgumentList namedTemplateArgumentList)
void visit(const NamedTemplateArgument namedTemplateArgument)
void visit(const NamespaceList namespaceList)
void visit(const NewAnonClassExpression newAnonClassExpression)
void visit(const NewExpression newExpression)
void visit(const NonVoidInitializer nonVoidInitializer)
void visit(const Operands operands)
void visit(const OrExpression orExpression)
void visit(const OrOrExpression orOrExpression)
void visit(const OutContractExpression outContractExpression)
void visit(const OutStatement outStatement)
void visit(const ParameterAttribute parameterAttribute)
void visit(const Parameter parameter)
void visit(const Parameters parameters)
void visit(const Postblit postblit)
void visit(const PowExpression powExpression)
void visit(const PragmaDeclaration pragmaDeclaration)
void visit(const PragmaStatement pragmaStatement)
void visit(const PragmaExpression pragmaExpression)
void visit(const PrimaryExpression primaryExpression)
void visit(const Register register)
void visit(const RelExpression relExpression)
void visit(const ReturnStatement returnStatement)
void visit(const ScopeGuardStatement scopeGuardStatement)
void visit(const SharedStaticConstructor sharedStaticConstructor)
void visit(const SharedStaticDestructor sharedStaticDestructor)
void visit(const ShiftExpression shiftExpression)
void visit(const ShortenedFunctionBody shortenedFunctionBody)
void visit(const SingleImport singleImport)
void visit(const Index index)
void visit(const SpecifiedFunctionBody specifiedFunctionBody)
void visit(const Statement statement)
void visit(const StatementNoCaseNoDefault statementNoCaseNoDefault)
void visit(const StaticAssertDeclaration staticAssertDeclaration)
void visit(const StaticAssertStatement staticAssertStatement)
void visit(const StaticConstructor staticConstructor)
void visit(const StaticDestructor staticDestructor)
void visit(const StaticIfCondition staticIfCondition)
void visit(const StorageClass storageClass)
void visit(const StringLiteralList stringLiteralList)
void visit(const StructBody structBody)
void visit(const StructDeclaration structDeclaration)
void visit(const StructInitializer structInitializer)
void visit(const StructMemberInitializer structMemberInitializer)
void visit(const StructMemberInitializers structMemberInitializers)
void visit(const SwitchStatement switchStatement)
void visit(const Symbol symbol)
void visit(const SynchronizedStatement synchronizedStatement)
void visit(const TemplateAliasParameter templateAliasParameter)
void visit(const TemplateArgument templateArgument)
void visit(const TemplateArgumentList templateArgumentList)
void visit(const TemplateArguments templateArguments)
void visit(const TemplateDeclaration templateDeclaration)
void visit(const TemplateInstance templateInstance)
void visit(const TemplateMixinExpression templateMixinExpression)
void visit(const TemplateParameter templateParameter)
void visit(const TemplateParameterList templateParameterList)
void visit(const TemplateParameters templateParameters)
void visit(const TemplateSingleArgument templateSingleArgument)
void visit(const TemplateThisParameter templateThisParameter)
void visit(const TemplateTupleParameter templateTupleParameter)
void visit(const TemplateTypeParameter templateTypeParameter)
void visit(const TemplateValueParameter templateValueParameter)
void visit(const TemplateValueParameterDefault templateValueParameterDefault)
void visit(const TernaryExpression ternaryExpression)
void visit(const ThrowExpression throwExpression)
void visit(const Token)
void visit(const TraitsExpression traitsExpression)
void visit(const TryStatement tryStatement)
void visit(const Type type)
void visit(const TypeIdentifierPart typeIdentChain)
void visit(const Type2 type2)
void visit(const TypeSpecialization typeSpecialization)
void visit(const TypeSuffix typeSuffix)
void visit(const TypeidExpression typeidExpression)
void visit(const TypeofExpression typeofExpression)
void visit(const UnaryExpression unaryExpression)
void visit(const UnionDeclaration unionDeclaration)
void visit(const Unittest unittest_)
void visit(const VariableDeclaration variableDeclaration)
void visit(const Vector vector)
void visit(const VersionCondition versionCondition)
void visit(const VersionSpecification versionSpecification)
void visit(const WhileStatement whileStatement)
void visit(const WithStatement withStatement)
void visit(const XorExpression xorExpression)
interfaceASTNode
Methods
void accept(ASTVisitor visitor) const;
Fields
const(Token)[] tokensList of tokens consumed by this AST node
Methods
void accept(ASTVisitor visitor) const;
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
StorageClass[] storageClasses
Type type
DeclaratorIdentifierList declaratorIdentifierList
AliasInitializer[] initializers
string comment
Parameters parameters
MemberFunctionAttribute[] memberFunctionAttributes
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
Type type
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
StorageClass[] storageClasses
TemplateParameters templateParameters
Type type
FunctionLiteralExpression functionLiteralExpression
Parameters parameters
MemberFunctionAttribute[] memberFunctionAttributes
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
Type baseType
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Token name
ExpressionNode assignExpression
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
ExpressionNode assignExpression
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
NamedArgumentList namedArgumentList
Methods
void accept(ASTVisitor visitor) const
Fields
size_t startLocation
size_t endLocation
ArrayMemberInitialization[] arrayMemberInitializations
Methods
void accept(ASTVisitor visitor) const
Fields
ArgumentList argumentList
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
NonVoidInitializer nonVoidInitializer
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
size_t line
size_t column
AsmBrExp asmBrExp
AsmUnaExp asmUnaExp
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifierOrIntegerOrOpcode
bool hasAlign
bool isLabel
AsmInstruction asmInstruction
Operands operands
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
IdentifierChain identifierChain
Register register
ExpressionNode segmentOverrideSuffix
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
AsmInstruction[] asmInstructions
GccAsmInstruction[] gccAsmInstructions
FunctionAttribute[] functionAttributes
Methods
void accept(ASTVisitor visitor) const
Fields
Token left
Token right
Methods
void accept(ASTVisitor visitor) const
Fields
AsmTypePrefix asmTypePrefix
Token prefix
AsmPrimaryExp asmPrimaryExp
AsmUnaExp asmUnaExp
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assertion
ExpressionNode[] messageParts
Methods
void accept(ASTVisitor visitor) const
inout(ExpressionNode) firstMessage() inout nothrow pure @nogc @safeReturns `messageParts[0]` or `null` if no messageParts.
Fields
size_t line
size_t column
AssertArguments assertArguments
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode ternaryExpression
ExpressionNode expression
IdType operator
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Fields
KeyValuePairs keyValuePairs
Methods
void accept(ASTVisitor visitor) const

User-defined @attribute attributes. Also includes @disable, @nogc, @live, etc. by simply having them be regular identifiers.

Fields
ArgumentList argumentListSet for all of `@identifier(argumentList)`, `@templateInstance!T(argumentList)` and `@(argumentListInParens)`.
TemplateInstance templateInstanceWhen there is at least one template argument (`@id!T` or `@id!(T, U)`, etc.), this is set instead of identifier. For regular `@identifier` or `@fn(args)` UDAs without template arguments, `identifie...
bool useParenTrue for `@(argumentList)` code, as well as `@templateInstance!T(argumentList)` and `@identifier(argumentList)`.
Token identifierFor `@identifier`, the identifier part. Not set for `@identifer!templateArgs`, see templateInstance for that. This is however set for `@identifier(regularArguments)`.
TemplateSingleArgument templateSingleArgumentFor `@int` or `@5`, the part after the `@`. May only be a single token, may not be identifier (see identifier for that). Introduced with DMD 2.104.0
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Token token() const nothrow pure @nogc @safe scopeReturns either identifier or templateSingleArgument, whichever is set, otherwise `Token.init`.
Fields
PragmaExpression pragmaExpression
Deprecated deprecated_
AtAttribute atAttribute
AlignAttribute alignAttribute
LinkageAttribute linkageAttribute
Token attribute
IdentifierChain identifierChain
Methods
void accept(ASTVisitor visitor) const
Fields
Attribute attribute
size_t line
Methods
void accept(ASTVisitor visitor) const
Fields
StorageClass[] storageClasses
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
Initializer initializer
TemplateParameters templateParameters
Methods
void accept(ASTVisitor visitor) const
Fields
size_t startLocationByte position of the opening brace
size_t endLocationByte position of the closing brace
DeclarationsAndStatements declarationsAndStatements
Methods
void accept(ASTVisitor visitor) const
Fields
Token label
Methods
void accept(ASTVisitor visitor) const
Fields
Type2 type2
Methods
void accept(ASTVisitor visitor) const
Fields
BaseClass[] items
Methods
void accept(ASTVisitor visitor) const
Fields
DeclarationsAndStatements declarationsAndStatements
size_t colonLocation
Methods
void accept(ASTVisitor visitor) const
Fields
ArgumentList argumentList
DeclarationsAndStatements declarationsAndStatements
size_t colonLocation
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
CastQualifier castQualifier
UnaryExpression unaryExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Token first
Token second
Methods
void accept(ASTVisitor visitor) const
Fields
Catch[] catches
LastCatch lastCatch
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Token identifier
DeclarationOrStatement declarationOrStatement
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
Constraint constraint
BaseClassList baseClassList
StructBody structBody
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode shiftExpression
ExpressionNode equalExpression
ExpressionNode identityExpression
ExpressionNode relExpression
ExpressionNode inExpression
Methods
void accept(ASTVisitor visitor) const
Fields
VersionCondition versionCondition
DebugCondition debugCondition
StaticIfCondition staticIfCondition
Methods
void accept(ASTVisitor visitor) const
Fields
CompileCondition compileCondition
Declaration[] trueDeclarations
Declaration[] falseDeclarations
bool hasElse
Methods
void accept(ASTVisitor visitor) const
Fields
CompileCondition compileCondition
DeclarationOrStatement falseStatement
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
size_t location
Methods
void accept(ASTVisitor visitor) const
Fields
Parameters parameters
FunctionBody functionBody
Constraint constraint
MemberFunctionAttribute[] memberFunctionAttributes
TemplateParameters templateParameters
size_t location
size_t line
size_t column
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Token label
Methods
void accept(ASTVisitor visitor) const
Fields
size_t debugIndex
Token identifierOrInteger
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifierOrInteger
Methods
void accept(ASTVisitor visitor) const
Fields
private Algebraic!(DeclarationTypes) storage
Attribute[] attributes
Declaration[] declarations
Methods
void accept(ASTVisitor visitor) const
private string generateProperty(string type, string name)
bool opEquals(Object other) const
Fields
DeclarationOrStatement[] declarationsAndStatements
Methods
void accept(ASTVisitor visitor) const
Fields
Declaration declaration
Statement statement
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
BitfieldWidth bitfieldWidth
Initializer initializer
TypeSuffix[] cstyle
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode expression
Methods
void accept(ASTVisitor visitor) const
Fields
Token[] identifiers
Methods
void accept(ASTVisitor visitor) const
Fields
DeclarationsAndStatements declarationsAndStatements
size_t colonLocation
Methods
void accept(ASTVisitor visitor) const
Fields
UnaryExpression unaryExpression
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Fields
DeleteExpression deleteExpression
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
MemberFunctionAttribute[] memberFunctionAttributes
FunctionBody functionBody
size_t line
size_t column
size_t index
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
StatementNoCaseNoDefault statementNoCaseNoDefault
Expression expression
Methods
void accept(ASTVisitor visitor) const
Fields
EnumMember[] enumMembers
size_t startLocationByte position of the opening brace
size_t endLocationByte position of the closing brace
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
Type type
EnumBody enumBody
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Deprecated deprecated_
AtAttribute atAttribute
Methods
void accept(ASTVisitor visitor) const
Fields
EnumMemberAttribute[] enumMemberAttributes
Token name
Type type
ExpressionNode assignExpression
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
ExpressionNode assignExpression
Type type
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
Methods
void accept(ASTVisitor visitor) const
Fields
SwitchStatement switchStatement
Methods
void accept(ASTVisitor visitor) const
Fields
DeclarationOrStatement declarationOrStatement
Methods
void accept(ASTVisitor visitor) const
Fields
DeclarationOrStatement initialization
Expression increment
DeclarationOrStatement declarationOrStatement
size_t startIndex
Methods
void accept(ASTVisitor visitor) const
classForeach(bool declOnly) : BaseNode
Fields
IdType type
ForeachTypeList foreachTypeList
ForeachType foreachType
size_t startIndex
Methods
void accept(ASTVisitor visitor) const
Fields
ForeachStatement foreachStatement
Methods
void accept(ASTVisitor visitor) const
Fields
bool isAlias
bool isEnum
bool isRef
bool isScope
IdType[] typeConstructors
Type type
Token identifier
Methods
void accept(ASTVisitor visitor) const
Fields
ForeachType[] items
Methods
void accept(ASTVisitor visitor) const
Fields
Token token
AtAttribute atAttribute
Methods
void accept(ASTVisitor visitor) const
Fields
size_t endLocation
SpecifiedFunctionBody specifiedFunctionBody
MissingFunctionBody missingFunctionBody
ShortenedFunctionBody shortenedFunctionBody
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
UnaryExpression unaryExpression
TemplateArguments templateArguments
Arguments arguments
Methods
void accept(ASTVisitor visitor) const
Fields
InOutContractExpression inOutContractExpression
InOutStatement inOutStatement
Methods
void accept(ASTVisitor visitor) const
Fields
bool hasAuto
bool hasRef
Type returnType
Token name
TemplateParameters templateParameters
Parameters parameters
Constraint constraint
FunctionBody functionBody
MemberFunctionAttribute[] memberFunctionAttributes
string comment
Attribute[] attributes
StorageClass[] storageClasses
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
FunctionAttribute[] functionAttributes
SpecifiedFunctionBody specifiedFunctionBody
IdType functionOrDelegate
MemberFunctionAttribute[] memberFunctionAttributes
Parameters parameters
Token identifier
Type returnType
ReturnRefType returnRefType
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
bool isReturnRef() const
enumReturnRefType : ubyte
noRef = 0
ref_ = 1
autoRef = 2
Fields
Expression assemblerTemplate
GccAsmOperandList inputOperands
GccAsmOperandList outputOperands
Methods
void accept(ASTVisitor visitor) const
Fields
Token symbolicName
Token constraint
ExpressionNode expression
Methods
void accept(ASTVisitor visitor) const
Fields
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
Token label
Methods
void accept(ASTVisitor visitor) const
Fields
Token[] identifiers
Methods
void accept(ASTVisitor visitor) const
Fields
bool dot
IdentifierOrTemplateInstance identifierOrTemplateInstance
TypeIdentifierPart typeIdentifierPart
Methods
void accept(ASTVisitor visitor) const
Fields
IdentifierOrTemplateInstance[] identifiersOrTemplateInstances
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
TemplateInstance templateInstance
Methods
void accept(ASTVisitor visitor) const
Fields
bool negated
Methods
void accept(ASTVisitor visitor) const
Fields
IfCondition condition
size_t startIndex
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
inout(IdType[]) typeCtors() inout @property
inout(Type) type() inout @property
inout(Token) identifier() inout @property
inout(Expression) expression() inout @property

In an if (or while) condition this represents:

if (auto x = readln)
    ^^^^^^^^^^^^^^^

if (a == b || c == d)
    ^^^^^^^^^^^^^^^^

Fields
IdType[] typeCtorsIn an assignment-condition, these are the optional type constructors
Type typeIn an assignment-condition, this is the optional explicit type
Token identifierIn an assignment-condition, in `if (auto x = ...)` this is the `x`
bool scope_In an assignment-condition, this is true if `scope` is used to construct the variable.
Expression expressionIn an assignment-condition, this is the part after the equals sign. Otherwise this is any other expression that is evaluated to be a boolean. (e.g. UnaryExpression, AndAndExpression, CmpExpression,...
Methods
void accept(ASTVisitor visitor) const
Fields
Token left
Token right
Methods
void accept(ASTVisitor visitor) const
Fields
SingleImport singleImport
ImportBind[] importBinds
Methods
void accept(ASTVisitor visitor) const
Fields
SingleImport[] singleImports
ImportBindings importBindings
size_t startIndex
size_t endIndex
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
UnaryExpression unaryExpression
Index[] indexes
Methods
void accept(ASTVisitor visitor) const
Fields
size_t inTokenLocation
AssertArguments assertArguments
Methods
void accept(ASTVisitor visitor) const
Fields
bool negated
Methods
void accept(ASTVisitor visitor) const
Fields
InContractExpression inContractExpression
OutContractExpression outContractExpression
Methods
void accept(ASTVisitor visitor) const
Fields
InStatement inStatement
OutStatement outStatement
Methods
void accept(ASTVisitor visitor) const
Fields
size_t inTokenLocation
BlockStatement blockStatement
Methods
void accept(ASTVisitor visitor) const
Fields
StatementNoCaseNoDefault statementNoCaseNoDefault
Methods
void accept(ASTVisitor visitor) const
Fields
NonVoidInitializer nonVoidInitializer
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
Constraint constraint
BaseClassList baseClassList
StructBody structBody
string comment
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
inout(Token) startQuote() inout pure nothrow @nogc @safe scope
inout(Token) endQuote() inout pure nothrow @nogc @safe scope
char postfixType() inout pure nothrow @nogc @safe scope'\0'/'c'/'w'/'d' for `i""`, `i""c`, `i""w` and `i""d` respectively.

AST nodes within an interpolated string

Just plain text inside the interpolated string

Methods
void accept(ASTVisitor visitor) const
inout(Token) text() inout pure nothrow @nogc @safe scopeThe token containing the plain text part in its `.text` property.

A $(...) interpolation sequence

Fields
Expression expression
Methods
void accept(ASTVisitor visitor) const
inout(Token) dollar() inout pure nothrow @nogc @safe scopeThe dollar token.
Fields
BlockStatement blockStatement
AssertArguments assertArguments
bool useParen
string comment
size_t line
size_t index
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Token identifier
TypeSpecialization typeSpecialization
TemplateParameterList templateParameterList
IdType equalsOrColon
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
KeyValuePair[] keyValuePairs
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
DeclarationOrStatement declarationOrStatement
Methods
void accept(ASTVisitor visitor) const
Fields
StatementNoCaseNoDefault statementNoCaseNoDefault
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
bool hasPlusPlus
TypeIdentifierPart typeIdentifierPart
IdType classOrStruct
NamespaceList cppNamespaces
Methods
void accept(ASTVisitor visitor) const
Fields
IdType tokenType
AtAttribute atAttribute
Methods
void accept(ASTVisitor visitor) const
Fields
FunctionContract[] functionContracts
Methods
void accept(ASTVisitor visitor) const
Fields
MixinExpression mixinExpression
TemplateMixinExpression templateMixinExpression
Methods
void accept(ASTVisitor visitor) const
Fields
ArgumentList argumentList
Methods
void accept(ASTVisitor visitor) const
Fields
TemplateDeclaration templateDeclaration
Methods
void accept(ASTVisitor visitor) const
Fields
Symbol symbol
IdentifierOrTemplateChain identifierOrTemplateChain
TypeofExpression typeofExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Token scriptLine
ModuleDeclaration moduleDeclaration
Declaration[] declarations
Methods
void accept(ASTVisitor visitor) const
Fields
AtAttribute[] atAttributes
Deprecated deprecated_
IdentifierChain moduleName
size_t startLocation
size_t endLocation
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
Methods
void accept(ASTVisitor visitor) const
Fields
Arguments allocatorArguments
Arguments constructorArguments
BaseClassList baseClassList
StructBody structBody
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
NewAnonClassExpression newAnonClassExpression
Arguments arguments
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
LabeledStatement labeledStatement
BlockStatement blockStatement
IfStatement ifStatement
WhileStatement whileStatement
DoStatement doStatement
ForStatement forStatement
ForeachStatement foreachStatement
StaticForeachStatement staticForeachStatement
SwitchStatement switchStatement
FinalSwitchStatement finalSwitchStatement
ContinueStatement continueStatement
BreakStatement breakStatement
ReturnStatement returnStatement
GotoStatement gotoStatement
WithStatement withStatement
SynchronizedStatement synchronizedStatement
TryStatement tryStatement
ScopeGuardStatement scopeGuardStatement
AsmStatement asmStatement
PragmaStatement pragmaStatement
ConditionalStatement conditionalStatement
StaticAssertStatement staticAssertStatement
VersionSpecification versionSpecification
DebugSpecification debugSpecification
ExpressionStatement expressionStatement
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
ArrayInitializer arrayInitializer
StructInitializer structInitializer
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode[] operands
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
size_t outTokenLocation
Token parameter
AssertArguments assertArguments
Methods
void accept(ASTVisitor visitor) const
Fields
size_t outTokenLocation
Token parameter
BlockStatement blockStatement
Methods
void accept(ASTVisitor visitor) const
Fields
IdType idType
AtAttribute atAttribute
Methods
void accept(ASTVisitor visitor) const
Fields
ParameterAttribute[] parameterAttributes
Type type
Token name
bool vararg
TypeSuffix[] cstyle
Methods
void accept(ASTVisitor visitor) const
Fields
Parameter[] parameters
bool hasVarargs
ParameterAttribute[] varargsAttributes
Methods
void accept(ASTVisitor visitor) const
Fields
FunctionBody functionBody
MemberFunctionAttribute[] memberFunctionAttributes
size_t location
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const
Fields
PragmaExpression pragmaExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
ArgumentList argumentList
Methods
void accept(ASTVisitor visitor) const
Fields
PragmaExpression pragmaExpression
Statement statement
BlockStatement blockStatement
Methods
void accept(ASTVisitor visitor) const
Fields
Token dot
Token primary
IdentifierOrTemplateInstance identifierOrTemplateInstance
Token basicType
TypeofExpression typeofExpression
TypeidExpression typeidExpression
ArrayLiteral arrayLiteral
AssocArrayLiteral assocArrayLiteral
Expression expression
IsExpression isExpression
FunctionLiteralExpression functionLiteralExpression
TraitsExpression traitsExpression
MixinExpression mixinExpression
ImportExpression importExpression
Vector vector
Type type
Token typeConstructor
Arguments arguments
InterpolatedString interpolatedString
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
Token intLiteral
bool hasIntegerLiteral
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
DeclarationOrStatement declarationOrStatement
Methods
void accept(ASTVisitor visitor) const
inout(StatementNoCaseNoDefault) statementNoCaseNoDefault() inout @safe pure nothrow @nogc
Fields
MemberFunctionAttribute[] memberFunctionAttributes
FunctionBody functionBody
size_t location
size_t line
size_t column
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
MemberFunctionAttribute[] memberFunctionAttributes
FunctionBody functionBody
size_t location
size_t line
size_t column
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
IdType operator
Methods
void accept(ASTVisitor visitor) const
Fields
Token rename
IdentifierChain identifierChain
Methods
void accept(ASTVisitor visitor) const
Fields
FunctionContract[] functionContracts
BlockStatement blockStatement
bool hasDo
Methods
void accept(ASTVisitor visitor) const
Fields
FunctionContract[] functionContracts
Expression expression
Methods
void accept(ASTVisitor visitor) const
Fields
StatementNoCaseNoDefault statementNoCaseNoDefault
CaseStatement caseStatement
CaseRangeStatement caseRangeStatement
DefaultStatement defaultStatement
Methods
void accept(ASTVisitor visitor) const
Fields
StaticAssertStatement staticAssertStatement
Methods
void accept(ASTVisitor visitor) const
Fields
AssertExpression assertExpression
Methods
void accept(ASTVisitor visitor) const
Fields
MemberFunctionAttribute[] memberFunctionAttributes
FunctionBody functionBody
size_t location
size_t line
size_t column
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
MemberFunctionAttribute[] memberFunctionAttributes
FunctionBody functionBody
size_t location
size_t line
size_t column
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
AlignAttribute alignAttribute
LinkageAttribute linkageAttribute
AtAttribute atAttribute
Deprecated deprecated_
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
Token[] items
Methods
void accept(ASTVisitor visitor) const
Fields
size_t startLocationByte position of the opening brace
size_t endLocationByte position of the closing brace
Declaration[] declarations
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
Constraint constraint
StructBody structBody
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
StructMemberInitializers structMemberInitializers
size_t startLocation
size_t endLocation
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
NonVoidInitializer nonVoidInitializer
Methods
void accept(ASTVisitor visitor) const
Fields
StructMemberInitializer[] structMemberInitializers
Methods
void accept(ASTVisitor visitor) const
Fields
IfCondition condition
Statement statement
Methods
void accept(ASTVisitor visitor) const
inout(Expression) expression() inout @property @safe nothrow @nogc pure
Fields
IdentifierOrTemplateChain identifierOrTemplateChain
bool dot
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
StatementNoCaseNoDefault statementNoCaseNoDefault
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Token identifier
Type colonType
ExpressionNode colonExpression
Type assignType
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
Type type
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
ExpressionNode assignExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Methods
void accept(ASTVisitor visitor) const
Fields
NamedTemplateArgumentList namedTemplateArgumentList
TemplateSingleArgument templateSingleArgument
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
Constraint constraint
Declaration[] declarations
string comment
size_t startLocationByte position of the opening brace
size_t endLocationByte position of the closing brace
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
TemplateArguments templateArguments
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
TemplateArguments templateArguments
MixinTemplateName mixinTemplateName
Methods
void accept(ASTVisitor visitor) const
Fields
TemplateTypeParameter templateTypeParameter
TemplateValueParameter templateValueParameter
TemplateAliasParameter templateAliasParameter
TemplateTupleParameter templateTupleParameter
TemplateThisParameter templateThisParameter
Methods
void accept(ASTVisitor visitor) const
Fields
Methods
void accept(ASTVisitor visitor) const
Fields
TemplateParameterList templateParameterList
Methods
void accept(ASTVisitor visitor) const
Fields
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
TemplateTypeParameter templateTypeParameter
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
Type colonType
Type assignType
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Token identifier
ExpressionNode assignExpression
TemplateValueParameterDefault templateValueParameterDefault
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode assignExpression
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
ExpressionNode orOrExpression
ExpressionNode expression
ExpressionNode ternaryExpression
Token colonStore this so that we know where the ':' is
Methods
void accept(ASTVisitor visitor) const
deprecated Replaced by ExpressionStatement + ThrowExpression
Fields
ExpressionNode expression
Methods
void accept(ASTVisitor visitor) const
Fields
Token identifier
TemplateArgumentList templateArgumentList
Methods
void accept(ASTVisitor visitor) const
Fields
DeclarationOrStatement declarationOrStatement
Catches catches
Finally finally_
Methods
void accept(ASTVisitor visitor) const
classType : BaseNode
Fields
IdType[] typeConstructors
TypeSuffix[] typeSuffixes
Type2 type2
Methods
void accept(ASTVisitor visitor) const
Fields
IdType builtinType
TypeofExpression typeofExpression
TypeIdentifierPart typeIdentifierPart
IdType typeConstructor
Type type
TraitsExpression traitsExpression
Vector vector
MixinExpression mixinExpression
Methods
void accept(ASTVisitor visitor) const
Fields
Token token
Type type
Methods
void accept(ASTVisitor visitor) const
Fields
Token delegateOrFunction
Token star
bool array
Type type
Parameters parameters
MemberFunctionAttribute[] memberFunctionAttributes
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Expression expression
Methods
void accept(ASTVisitor visitor) const
Fields
Expression expression
Token return_
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
PrimaryExpression primaryExpression
Token prefix
Token suffix
UnaryExpression unaryExpression
NewExpression newExpression
DeleteExpression deleteExpression
CastExpression castExpression
FunctionCallExpression functionCallExpression
IdentifierOrTemplateInstance identifierOrTemplateInstance
AssertExpression assertExpression
ThrowExpression throwExpression
IndexExpression indexExpression
size_t dotLocation
Methods
void accept(ASTVisitor visitor) const
Fields
Token name
TemplateParameters templateParameters
Constraint constraint
StructBody structBody
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
BlockStatement blockStatement
string comment
size_t location
size_t line
size_t column
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Declarator[] declarators
StorageClass[] storageClasses
AutoDeclaration autoDeclaration
string comment
Methods
void accept(ASTVisitor visitor) const
Fields
Type type
Methods
void accept(ASTVisitor visitor) const
Fields
size_t versionIndex
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
Token token
Methods
void accept(ASTVisitor visitor) const
Fields
IfCondition condition
DeclarationOrStatement declarationOrStatement
size_t startIndex
Methods
void accept(ASTVisitor visitor) const
inout(Expression) expression() inout @property
Fields
Expression expression
DeclarationOrStatement declarationOrStatement
Methods
void accept(ASTVisitor visitor) const
Methods
void accept(ASTVisitor visitor) const

Variables 1

private varuint[TypeInfo] typeMap

Templates 1

tmplvisitIfNotNull(fields ...)