Module cpp_demangle::ast [] [src]

Abstract syntax tree types for mangled symbols.

Structs

ArgStack

An ArgStack represents the current function and template demangling scope we are within. As we enter new demangling scopes, we construct new ArgStacks whose prev references point back to the old ones. These ArgStacks are kept on the native stack, and as functions return, they go out of scope and we use the previous ArgStacks again.

BareFunctionType

The <bare-function-type> production.

ClosureTypeName

The <closure-type-name> production.

CvQualifiers

The <CV-qualifiers> production.

DataMemberPrefix

The <data-member-prefix> production.

Discriminator

The <discriminator> production.

FunctionParam

The production.

FunctionType

The <function-type> production.

Identifier

The <identifier> pseudo-terminal.

Initializer

The <initializer> production.

LambdaSig

The <lambda-sig> production.

NestedName

The <nested-name> production.

NvOffset

A non-virtual offset, as described by the production.

PointerToMemberType

The <pointer-to-member-type> production.

SeqId

A production encoding a base-36 positive number.

SimpleId

The <simple-id> production.

SourceName

The <source-name> non-terminal.

TemplateArgs

The <template-args> production.

TemplateParam

The <template-param> production.

TemplateTemplateParam

The <template-template-param> production.

UnnamedTypeName

The <unnamed-type-name> production.

UnresolvedQualifierLevel

The <unresolved-qualifier-level> production.

UnscopedTemplateName

The <unscoped-template-name> production.

VOffset

A virtual offset, as described by the production.

Enums

ArrayType

The <array-type> production.

BaseUnresolvedName

The <base-unresolved-name> production.

BuiltinType

The <builtin-type> production.

CallOffset

The <call-offset> production.

ClassEnumType

The <class-enum-type> production.

CtorDtorName

The <ctor-dtor-name> production.

Decltype

The <decltype> production.

DestructorName

The <destructor-name> production.

Encoding

The <encoding> production.

ExprPrimary

The <expr-primary> production.

Expression

The <expression> production.

LocalName

The <local-name> production.

MangledName

The root AST node, and starting production.

Name

The <name> production.

OperatorName

The <operator-name> production.

Prefix

The <prefix> production.

PrefixHandle

A reference to a parsed <prefix> production.

RefQualifier

A production.

SpecialName

The <special-name> production.

StandardBuiltinType

A one of the standard variants of the production.

Substitution

The <substitution> form: a back-reference to some component we've already parsed.

TemplateArg

A production.

TemplateTemplateParamHandle

A reference to a parsed TemplateTemplateParam.

Type

The <type> production.

TypeHandle

A reference to a parsed Type production.

UnqualifiedName

The <unqualified-name> production.

UnresolvedName

The <unresolved-name> production.

UnresolvedType

The <unresolved-type> production.

UnresolvedTypeHandle

A reference to a parsed <unresolved-type> production.

UnscopedName

The <unscoped-name> production.

UnscopedTemplateNameHandle

A handle to an UnscopedTemplateName.

WellKnownComponent

The <substitution> variants that are encoded directly in the grammar, rather than as back references to other components in the substitution table.

Traits

DemangleWithInner

Sometimes an AST node needs to insert itself as an inner item within one of its children when demangling that child. For example, the AST (array 10 int) is demangled as int[10], but if we were to demangle (lvalue-ref (array 10 int)) then we want this demangled form: int (&) [10]. The DemangleWithInner trait enables such behavior by allowing us to pass AST parents down to their children as inner items.