Expand description
Abstract syntax tree types for mangled symbols.
Structs§
- ArgScope
Stack - An
ArgScopeStackrepresents the current function and template demangling scope we are within. As we enter new demangling scopes, we construct newArgScopeStacks whoseprevreferences point back to the old ones. TheseArgScopeStacks are kept on the native stack, and as functions return, they go out of scope and we use the previousArgScopeStacks 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 anUnscopedNameas the cxxabi docs say) and optionally aTemplateArgsif it is present. We can’t just parse aNameor anUnscopedTemplateNamehere 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. - 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. - 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. - 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
Typeproduction. - 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.