Expand description
Abstract syntax tree types for mangled symbols.
Structs§
- ArgScope
Stack - An
ArgScopeStack
represents the current function and template demangling scope we are within. As we enter new demangling scopes, we construct newArgScopeStack
s whoseprev
references point back to the old ones. TheseArgScopeStack
s are kept on the native stack, and as functions return, they go out of scope and we use the previousArgScopeStack
s again. - Bare
Function Type - The
<bare-function-type>
production. - Clone
Suffix ::= [ . ] [ . ]* - Clone
Type Identifier - The
<clone-type-identifier>
pseudo-terminal. - Closure
Type Name - The
<closure-type-name>
production. - CvQualifiers
- The
<CV-qualifiers>
production. - Data
Member Prefix - The
<data-member-prefix>
production. - Discriminator
- The
<discriminator>
production. - Function
Param - The
production. - Function
Type - The
<function-type>
production. - Identifier
- The
<identifier>
pseudo-terminal. - Initializer
- The
<initializer>
production. - Lambda
Sig - The
<lambda-sig>
production. - Member
Name - In libiberty, Member and DerefMember expressions have special handling.
They parse an
UnqualifiedName
(not anUnscopedName
as the cxxabi docs say) and optionally aTemplateArgs
if it is present. We can’t just parse aName
or anUnscopedTemplateName
here because that allows other inputs that libiberty does not. - NonSubstitution
- A handle to a component that is usually substitutable, and lives in the substitutions table, but in this particular case does not qualify for substitutions.
- NvOffset
- A non-virtual offset, as described by the
production. - Parse
Context - Common context needed when parsing.
- Pointer
ToMember Type - The
<pointer-to-member-type>
production. - Qualified
Builtin - A built-in type with CV-qualifiers.
- Resource
Name - The
<resource name>
pseudo-terminal. - SeqId
- A
production encoding a base-36 positive number. - Simple
Id - The
<simple-id>
production. - Source
Name - The
<source-name>
non-terminal. - Subobject
Expr - The subobject expression production.
- Tagged
Name - The
<tagged-name>
non-terminal. - Template
Args - The
<template-args>
production. - Template
Param - The
<template-param>
production. - Template
Template Param - The
<template-template-param>
production. - Unnamed
Type Name - The
<unnamed-type-name>
production. - Unresolved
Qualifier Level - The
<unresolved-qualifier-level>
production. - Unscoped
Template Name - The
<unscoped-template-name>
production. - VOffset
- A virtual offset, as described by the
production.
Enums§
- Array
Type - The
<array-type>
production. - Base
Unresolved Name - The
<base-unresolved-name>
production. - Builtin
Type - The
<builtin-type>
production. - Call
Offset - The
<call-offset>
production. - Class
Enum Type - The
<class-enum-type>
production. - Ctor
Dtor Name - The
<ctor-dtor-name>
production. - Decltype
- The
<decltype>
production. - Destructor
Name - The
<destructor-name>
production. - Encoding
- The
<encoding>
production. - Exception
Spec - The
<exception-spec>
production. - Expr
Primary - The
<expr-primary>
production. - Expression
- The
<expression>
production. - Global
Ctor Dtor - A global constructor or destructor.
- Local
Name - The
<local-name>
production. - Mangled
Name - The root AST node, and starting production.
- Name
- The
<name>
production. - Nested
Name - The
<nested-name>
production. - Operator
Name - The
<operator-name>
production. - Parametric
Builtin Type ::= DF _ # ISO/IEC TS 18661 binary floating point type _FloatN (N bits), C++23 std::floatN_t ::= DF x # IEEE extended precision formats, C23 _FloatNx (N bits) ::= DB _ # C23 signed _BitInt(N) ::= DB _ # C23 signed _BitInt(N) ::= DU _ # C23 unsigned _BitInt(N) ::= DU _ # C23 unsigned _BitInt(N) - Prefix
- The
<prefix>
production. - Prefix
Handle - A reference to a parsed
<prefix>
production. - RefQualifier
- A
production. - Simple
Operator Name - The
<simple-operator-name>
production. - Special
Name - The
<special-name>
production. - Standard
Builtin Type - A one of the standard variants of the
production. - Substitution
- The
<substitution>
form: a back-reference to some component we’ve already parsed. - Template
Arg - A
production. - Template
Template Param Handle - A reference to a parsed
TemplateTemplateParam
. - Type
- The
<type>
production. - Type
Handle - A reference to a parsed
Type
production. - Unqualified
Name - The
<unqualified-name>
production. - Unresolved
Name - The
<unresolved-name>
production. - Unresolved
Type - The
<unresolved-type>
production. - Unresolved
Type Handle - A reference to a parsed
<unresolved-type>
production. - Unscoped
Name - The
<unscoped-name>
production. - Unscoped
Template Name Handle - A handle to an
UnscopedTemplateName
. - Vector
Type - The
<vector-type>
production. - Well
Known Component - The
<substitution>
variants that are encoded directly in the grammar, rather than as back references to other components in the substitution table.