Not sure if it can be useful to someone else but I extracted the dmd's class hierarchy as a DOT file:

digraph dlang_ast {
    AddAssignExp -> BinAssignExp;
    AddExp -> BinExp;
    AddrExp -> UnaExp;
    AggregateDeclaration -> ScopeDsymbol;
    AliasDeclaration -> Declaration;
    AliasThis -> Dsymbol;
    AlignDeclaration -> AttribDeclaration;
    AndAndExp -> BinExp;
    AndAssignExp -> BinAssignExp;
    AndExp -> BinExp;
    AnonDeclaration -> AttribDeclaration;
    ArrayExp -> UnaExp;
    ArrayInitializer -> Initializer;
    ArrayLengthExp -> UnaExp;
    ArrayLiteralExp -> Expression;
    ArrayScopeSymbol -> ScopeDsymbol;
    AsmStatement -> Statement;
    AssertExp -> UnaExp;
    AssignExp -> BinExp;
    AssocArrayLiteralExp -> Expression;
    AttribDeclaration -> Dsymbol;
    BinAssignExp -> BinExp;
    BinExp -> Expression;
    BlitExp -> AssignExp;
    BoolExp -> UnaExp;
    BreakStatement -> Statement;
    CallExp -> UnaExp;
    CaseRangeStatement -> Statement;
    CaseStatement -> Statement;
    CastExp -> UnaExp;
    CatAssignExp -> BinAssignExp;
    CatExp -> BinExp;
    ClassDeclaration -> AggregateDeclaration;
    ClassReferenceExp -> Expression;
    CmpExp -> BinExp;
    ComExp -> UnaExp;
    CommaExp -> BinExp;
    CompileDeclaration -> AttribDeclaration;
    CompileExp -> UnaExp;
    CompileStatement -> Statement;
    ComplexExp -> Expression;
    CompoundAsmStatement -> CompoundStatement;
    CompoundDeclarationStatement -> CompoundStatement;
    CompoundStatement -> Statement;
    CondExp -> BinExp;
    ConditionalDeclaration -> AttribDeclaration;
    ConditionalStatement -> Statement;
    ConstructExp -> AssignExp;
    ContinueStatement -> Statement;
    CtorDeclaration -> FuncDeclaration;
    DVCondition -> Condition;
    DebugCondition -> DVCondition;
    DebugStatement -> Statement;
    DebugSymbol -> Dsymbol;
    Declaration -> Dsymbol;
    DeclarationExp -> Expression;
    DefaultInitExp -> Expression;
    DefaultStatement -> Statement;
    DelegateExp -> UnaExp;
    DelegateFuncptrExp -> UnaExp;
    DelegatePtrExp -> UnaExp;
    DeleteDeclaration -> FuncDeclaration;
    DeleteExp -> UnaExp;
    DeprecatedDeclaration -> StorageClassDeclaration;
    DivAssignExp -> BinAssignExp;
    DivExp -> BinExp;
    DoStatement -> Statement;
    DollarExp -> IdentifierExp;
    DotExp -> BinExp;
    DotIdExp -> UnaExp;
    DotTemplateExp -> UnaExp;
    DotTemplateInstanceExp -> UnaExp;
    DotTypeExp -> UnaExp;
    DotVarExp -> UnaExp;
    DsymbolExp -> Expression;
    DtorDeclaration -> FuncDeclaration;
    DtorExpStatement -> ExpStatement;
    EnumDeclaration -> ScopeDsymbol;
    EnumMember -> Dsymbol;
    EqualExp -> BinExp;
    ErrorExp -> Expression;
    ErrorInitializer -> Initializer;
    ErrorStatement -> Statement;
    ExpInitializer -> Initializer;
    ExpStatement -> Statement;
    FileExp -> UnaExp;
    FileInitExp -> DefaultInitExp;
    ForStatement -> Statement;
    ForeachRangeStatement -> Statement;
    ForeachStatement -> Statement;
    FuncAliasDeclaration -> FuncDeclaration;
    FuncDeclaration -> Declaration;
    FuncExp -> Expression;
    FuncInitExp -> DefaultInitExp;
    FuncLiteralDeclaration -> FuncDeclaration;
    GotoCaseStatement -> Statement;
    GotoDefaultStatement -> Statement;
    GotoStatement -> Statement;
    HaltExp -> Expression;
    IdentifierExp -> Expression;
    IdentityExp -> BinExp;
    IfStatement -> Statement;
    Import -> Dsymbol;
    ImportStatement -> Statement;
    InExp -> BinExp;
    IndexExp -> BinExp;
    IntegerExp -> Expression;
    InterfaceDeclaration -> ClassDeclaration;
    IntervalExp -> Expression;
    InvariantDeclaration -> FuncDeclaration;
    IsExp -> Expression;
    LabelDsymbol -> Dsymbol;
    LabelStatement -> Statement;
    LineInitExp -> DefaultInitExp;
    LinkDeclaration -> AttribDeclaration;
    MinAssignExp -> BinAssignExp;
    MinExp -> BinExp;
    ModAssignExp -> BinAssignExp;
    ModExp -> BinExp;
    Module -> Package;
    ModuleInitExp -> DefaultInitExp;
    MulAssignExp -> BinAssignExp;
    MulExp -> BinExp;
    NegExp -> UnaExp;
    NewAnonClassExp -> Expression;
    NewDeclaration -> FuncDeclaration;
    NewExp -> Expression;
    NotExp -> UnaExp;
    Nspace -> ScopeDsymbol;
    NullExp -> Expression;
    OnScopeStatement -> Statement;
    OrAssignExp -> BinAssignExp;
    OrExp -> BinExp;
    OrOrExp -> BinExp;
    OverDeclaration -> Declaration;
    OverExp -> Expression;
    OverloadSet -> Dsymbol;
    Package -> ScopeDsymbol;
    PeelStatement -> Statement;
    PostBlitDeclaration -> FuncDeclaration;
    PostExp -> BinExp;
    PowAssignExp -> BinAssignExp;
    PowExp -> BinExp;
    PragmaDeclaration -> AttribDeclaration;
    PragmaStatement -> Statement;
    PreExp -> UnaExp;
    PrettyFuncInitExp -> DefaultInitExp;
    ProtDeclaration -> AttribDeclaration;
    PtrExp -> UnaExp;
    RealExp -> Expression;
    RemoveExp -> BinExp;
    ReturnStatement -> Statement;
    ScopeDsymbol -> Dsymbol;
    ScopeExp -> Expression;
    ScopeStatement -> Statement;
    SharedStaticCtorDeclaration -> StaticCtorDeclaration;
    SharedStaticDtorDeclaration -> StaticDtorDeclaration;
    ShlAssignExp -> BinAssignExp;
    ShlExp -> BinExp;
    ShrAssignExp -> BinAssignExp;
    ShrExp -> BinExp;
    SliceExp -> UnaExp;
    StaticAssert -> Dsymbol;
    StaticAssertStatement -> Statement;
    StaticCtorDeclaration -> FuncDeclaration;
    StaticDtorDeclaration -> FuncDeclaration;
    StaticIfCondition -> Condition;
    StaticIfDeclaration -> ConditionalDeclaration;
    StorageClassDeclaration -> AttribDeclaration;
    StringExp -> Expression;
    StructDeclaration -> AggregateDeclaration;
    StructInitializer -> Initializer;
    StructLiteralExp -> Expression;
    SuperExp -> ThisExp;
    SwitchErrorStatement -> Statement;
    SwitchStatement -> Statement;
    SymOffExp -> SymbolExp;
    SymbolDeclaration -> Declaration;
    SymbolExp -> Expression;
    SynchronizedStatement -> Statement;
    TemplateAliasParameter -> TemplateParameter;
    TemplateDeclaration -> ScopeDsymbol;
    TemplateExp -> Expression;
    TemplateInstance -> ScopeDsymbol;
    TemplateMixin -> TemplateInstance;
    TemplateThisParameter -> TemplateTypeParameter;
    TemplateTupleParameter -> TemplateParameter;
    TemplateTypeParameter -> TemplateParameter;
    TemplateValueParameter -> TemplateParameter;
    ThisDeclaration -> VarDeclaration;
    ThisExp -> Expression;
    ThrowStatement -> Statement;
    ThrownExceptionExp -> Expression;
    TraitsExp -> Expression;
    TryCatchStatement -> Statement;
    TryFinallyStatement -> Statement;
    TupleDeclaration -> Declaration;
    TupleExp -> Expression;
    TypeAArray -> TypeArray;
    TypeArray -> TypeNext;
    TypeBasic -> Type;
    TypeClass -> Type;
    TypeDArray -> TypeArray;
    TypeDelegate -> TypeNext;
    TypeEnum -> Type;
    TypeError -> Type;
    TypeExp -> Expression;
    TypeFunction -> TypeNext;
    TypeIdentifier -> TypeQualified;
    TypeInfoArrayDeclaration -> TypeInfoDeclaration;
    TypeInfoAssociativeArrayDeclaration -> TypeInfoDeclaration;
    TypeInfoClassDeclaration -> TypeInfoDeclaration;
    TypeInfoConstDeclaration -> TypeInfoDeclaration;
    TypeInfoDeclaration -> VarDeclaration;
    TypeInfoDelegateDeclaration -> TypeInfoDeclaration;
    TypeInfoEnumDeclaration -> TypeInfoDeclaration;
    TypeInfoFunctionDeclaration -> TypeInfoDeclaration;
    TypeInfoInterfaceDeclaration -> TypeInfoDeclaration;
    TypeInfoInvariantDeclaration -> TypeInfoDeclaration;
    TypeInfoPointerDeclaration -> TypeInfoDeclaration;
    TypeInfoSharedDeclaration -> TypeInfoDeclaration;
    TypeInfoStaticArrayDeclaration -> TypeInfoDeclaration;
    TypeInfoStructDeclaration -> TypeInfoDeclaration;
    TypeInfoTupleDeclaration -> TypeInfoDeclaration;
    TypeInfoVectorDeclaration -> TypeInfoDeclaration;
    TypeInfoWildDeclaration -> TypeInfoDeclaration;
    TypeInstance -> TypeQualified;
    TypeNext -> Type;
    TypeNull -> Type;
    TypePointer -> TypeNext;
    TypeQualified -> Type;
    TypeReference -> TypeNext;
    TypeReturn -> TypeQualified;
    TypeSArray -> TypeArray;
    TypeSlice -> TypeNext;
    TypeStruct -> Type;
    TypeTuple -> Type;
    TypeTypeof -> TypeQualified;
    TypeVector -> Type;
    TypeidExp -> Expression;
    UAddExp -> UnaExp;
    UnaExp -> Expression;
    UnionDeclaration -> StructDeclaration;
    UnitTestDeclaration -> FuncDeclaration;
    UnrolledLoopStatement -> Statement;
    UserAttributeDeclaration -> AttribDeclaration;
    UshrAssignExp -> BinAssignExp;
    UshrExp -> BinExp;
    VarDeclaration -> Declaration;
    VarExp -> SymbolExp;
    VectorExp -> UnaExp;
    VersionCondition -> DVCondition;
    VersionSymbol -> Dsymbol;
    VoidInitExp -> Expression;
    VoidInitializer -> Initializer;
    WhileStatement -> Statement;
    WithScopeSymbol -> ScopeDsymbol;
    WithStatement -> Statement;
    XorAssignExp -> BinAssignExp;
    XorExp -> BinExp;
}

Reply via email to