Skip to content

Instantly share code, notes, and snippets.

@ukitaka
Created August 1, 2017 02:04
Show Gist options
  • Save ukitaka/ba813bf5210d5317f09f38eca0acad4f to your computer and use it in GitHub Desktop.
Save ukitaka/ba813bf5210d5317f09f38eca0acad4f to your computer and use it in GitHub Desktop.
AST.swift
@startuml
Decl <|-- IfConfigDecl
Decl <|-- ValueDecl
ValueDecl <|-- TypeDecl
TypeDecl <|-- GenericTypeDecl
GenericTypeDecl <|-- TypeAliasDecl
GenericTypeDecl <|-- NominalTypeDecl
NominalTypeDecl <|-- EnumDecl
NominalTypeDecl <|-- StructDecl
NominalTypeDecl <|-- ClassDecl
NominalTypeDecl <|-- ProtocolDecl
TypeDecl <|-- AbstractTypeParamDecl
AbstractTypeParamDecl <|-- GenericTypeParameterDecl
AbstractTypeParamDecl <|-- AssociatedTypeDecl
TypeDecl <|-- ModuleDecl
ValueDecl <|-- AbstractStorageDecl
AbstractStorageDecl <|-- VarDecl
VarDecl <|-- ParamDecl
AbstractStorageDecl <|-- SubscriptDecl
ValueDecl <|-- AbstractFunctionDecl
AbstractFunctionDecl <|-- FuncDecl
AbstractFunctionDecl <|-- ConstructorDecl
AbstractFunctionDecl <|-- DestructorDecl
ValueDecl <|-- EnumElementDecl
Decl <|-- PrecedenceGroupDecl
Decl <|-- OperatorDecl
OperatorDecl <|-- InfixOperatorDecl
OperatorDecl <|-- PrefixOperatorDecl
OperatorDecl <|-- PostfixOperatorDecl
Decl <|-- MissingMemberDecl
Decl <|-- ImportDecl
Decl <|-- ExtensionDecl
Decl <|-- PatternBindingDecl
Decl <|-- TopLevelCodeDecl
Decl <|-- EnumCaseDecl
@enduml
@startuml
Expr <|-- ErrorExpr
Expr <|-- CodeCompletionExpr
Expr <|-- LiteralExpr
LiteralExpr <|-- NilLiteralExpr
LiteralExpr <|-- NumberLiteralExpr
NumberLiteralExpr <|-- IntegerLiteralExpr
NumberLiteralExpr <|-- FloatLiteralExpr
LiteralExpr <|-- BooleanLiteralExpr
LiteralExpr <|-- StringLiteralExpr
LiteralExpr <|-- InterpolatedStringLiteralExpr
LiteralExpr <|-- MagicIdentifierLiteralExpr
LiteralExpr <|-- ObjectLiteralExpr
Expr <|-- DiscardAssignmentExpr
Expr <|-- DeclRefExpr
Expr <|-- SuperRefExpr
Expr <|-- TypeExpr
Expr <|-- OtherConstructorDeclRefExpr
Expr <|-- OverloadSetRefExpr
OverloadSetRefExpr <|-- OverloadedDeclRefExpr
Expr <|-- UnresolvedDeclRefExpr
Expr <|-- MemberRefExpr
Expr <|-- DynamicLookupExpr
DynamicLookupExpr <|-- DynamicMemberRefExpr
DynamicLookupExpr <|-- DynamicSubscriptExpr
Expr <|-- AnyTryExpr
AnyTryExpr <|-- TryExpr
AnyTryExpr <|-- ForceTryExpr
AnyTryExpr <|-- OptionalTryExpr
Expr <|-- IdentifyExpr
Expr <|-- CollectionExpr
CollectionExpr <|-- ArrayExpr
CollectionExpr <|-- DictionaryExpr
Expr <|-- KeyPathApplicationExpr
Expr <|-- UnresolvedDotExpr
Expr <|-- TupleElementExpr
Expr <|-- BindOptionalExpr
Expr <|-- OptionalEvaluationExpr
Expr <|-- ForceValueExpr
Expr <|-- MakeTemporarilyEscapableExpr
Expr <|-- OpenExistentialExpr
Expr <|-- ImplicitConversionExpr
ImplicitConversionExpr <|-- ClassMetatypeToObjectExpr
ImplicitConversionExpr <|-- ExistentialMetatypeToObjectExpr
ImplicitConversionExpr <|-- ProtocolMetatypeToObjectExpr
ImplicitConversionExpr <|-- InjectIntoOptionalExpr
ImplicitConversionExpr <|-- InOutToPointerExpr
ImplicitConversionExpr <|-- ArrayToPointerExpr
ImplicitConversionExpr <|-- StringToPointerExpr
ImplicitConversionExpr <|-- PointerToPointerExpr
ImplicitConversionExpr <|-- ForeignObjectConversionExpr
ImplicitConversionExpr <|-- UnevaluatedInstanceExpr
ImplicitConversionExpr <|-- TupleShuffleExpr
ImplicitConversionExpr <|-- LoadExpr
ImplicitConversionExpr <|-- UnresolvedTypeConversionExpr
ImplicitConversionExpr <|-- FunctionConversionExpr
ImplicitConversionExpr <|-- CovariantFunctionConversionExpr
ImplicitConversionExpr <|-- CovariantReturnConversionExpr
ImplicitConversionExpr <|-- MetatypeConversionExpr
ImplicitConversionExpr <|-- CollectionUpcastConversionExpr
ImplicitConversionExpr <|-- ErasureExpr
ImplicitConversionExpr <|-- AnyHashableErasureExpr
ImplicitConversionExpr <|-- ConditionalBridgeFromObjCExpr
ImplicitConversionExpr <|-- BridgeFromObjCExpr
ImplicitConversionExpr <|-- BridgeToObjCExpr
ImplicitConversionExpr <|-- DerivedToBaseExpr
ImplicitConversionExpr <|-- ArchetypeToSuperExpr
Expr <|-- UnresolvedSpecializeExpr
Expr <|-- InOutExpr
Expr <|-- CaptureListExpr
Expr <|-- DynamicTypeExpr
Expr <|-- OpaqueValueExpr
Expr <|-- ApplyExpr
ApplyExpr <|-- CallExpr
ApplyExpr <|-- PrefixUnaryExpr
ApplyExpr <|-- PostfixUnaryExpr
ApplyExpr <|-- BinaryExpr
ApplyExpr <|-- SelfApplyExpr
SelfApplyExpr <|-- DotSyntaxCallExpr
SelfApplyExpr <|-- ConstructorRefCallExpr
Expr <|-- DotSyntaxBaseIgnoredExpr
Expr <|-- ExplicitCastExpr
ExplicitCastExpr <|-- CheckedCastExpr
CheckedCastExpr <|-- ForcedCheckedCastExpr
CheckedCastExpr <|-- ConditionalCheckedCastExpr
CheckedCastExpr <|-- IsExpr
ExplicitCastExpr <|-- CoerceExpr
Expr <|-- ArrowExpr
Expr <|-- RebindSelfInConstructorExpr
Expr <|-- IfExpr
Expr <|-- EnumIsCaseExpr
Expr <|-- AssignExpr
Expr <|-- UnresolvedPatternExpr
Expr <|-- EditorPlaceholderExpr
Expr <|-- ObjCSelectorExpr
Expr <|-- KeyPathExpr
Expr <|-- KeyPathDotExpr
Expr <|-- UnresolvedMemberExpr
Expr <|-- TupleExpr
Expr <|-- SubscriptExpr
Expr <|-- AbstractClosure
AbstractClosure <|-- ClosureExpr
AbstractClosure <|-- AutoClosureExpr
@enduml
@startuml
Pattern <|-- ParenPattern
Pattern <|-- TuplePattern
Pattern <|-- NamedPattern
Pattern <|-- AnyPattern
Pattern <|-- TypedPattern
Pattern <|-- IsPattern
Pattern <|-- EnumElementPattern
Pattern <|-- BoolPattern
Pattern <|-- OptionalSomePattern
Pattern <|-- ExprPattern
Pattern <|-- VarPattern
@enduml
@startuml
Stmt <|-- BraceStmt
Stmt <|-- ReturnStmt
Stmt <|-- DeferStmt
Stmt <|-- LabeledStmt
LabeledStmt <|-- DoStmt
LabeledStmt <|-- DoCatchStmt
LabeledStmt <|-- LabeledConditionalStmt
LabeledConditionalStmt <|-- IfStmt
LabeledConditionalStmt <|-- GuardStmt
LabeledConditionalStmt <|-- WhileStmt
LabeledStmt <|-- RepeatWhileStmt
LabeledStmt <|-- ForStmt
LabeledStmt <|-- ForEachStmt
LabeledStmt <|-- SwitchStmt
Stmt <|-- CatchStmt
Stmt <|-- CaseStmt
Stmt <|-- BreakStmt
Stmt <|-- ContinueStmt
Stmt <|-- FallthroughStmt
Stmt <|-- FailStmt
Stmt <|-- ThrowStmt
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment