Enum cpp_demangle::ast::Expression [] [src]

pub enum Expression {
    Unary(OperatorNameBox<Expression>),
    Binary(OperatorNameBox<Expression>, Box<Expression>),
    Ternary(OperatorNameBox<Expression>, Box<Expression>, Box<Expression>),
    PrefixInc(Box<Expression>),
    PrefixDec(Box<Expression>),
    Call(Box<Expression>, Vec<Expression>),
    ConversionOne(TypeHandleBox<Expression>),
    ConversionMany(TypeHandleVec<Expression>),
    ConversionBraced(TypeHandleVec<Expression>),
    BracedInitList(Box<Expression>),
    New(Vec<Expression>, TypeHandleOption<Initializer>),
    GlobalNew(Vec<Expression>, TypeHandleOption<Initializer>),
    NewArray(Vec<Expression>, TypeHandleOption<Initializer>),
    GlobalNewArray(Vec<Expression>, TypeHandleOption<Initializer>),
    Delete(Box<Expression>),
    GlobalDelete(Box<Expression>),
    DeleteArray(Box<Expression>),
    GlobalDeleteArray(Box<Expression>),
    DynamicCast(TypeHandleBox<Expression>),
    StaticCast(TypeHandleBox<Expression>),
    ConstCast(TypeHandleBox<Expression>),
    ReinterpretCast(TypeHandleBox<Expression>),
    TypeidType(TypeHandle),
    TypeidExpr(Box<Expression>),
    SizeofType(TypeHandle),
    SizeofExpr(Box<Expression>),
    AlignofType(TypeHandle),
    AlignofExpr(Box<Expression>),
    Noexcept(Box<Expression>),
    TemplateParam(TemplateParam),
    FunctionParam(FunctionParam),
    Member(Box<Expression>, UnresolvedName),
    DerefMember(Box<Expression>, UnresolvedName),
    PointerToMember(Box<Expression>, Box<Expression>),
    SizeofTemplatePack(TemplateParam),
    SizeofFunctionPack(FunctionParam),
    SizeofCapturedTemplatePack(Vec<TemplateArg>),
    PackExpansion(Box<Expression>),
    Throw(Box<Expression>),
    Rethrow,
    UnresolvedName(UnresolvedName),
    Primary(ExprPrimary),
}

The <expression> production.

 <expression> ::= <unary operator-name> <expression>
              ::= <binary operator-name> <expression> <expression>
              ::= <ternary operator-name> <expression> <expression> <expression>
              ::= pp_ <expression>                             # prefix ++
              ::= mm_ <expression>                             # prefix --
              ::= cl <expression>+ E                           # expression (expr-list), call
              ::= cv <type> <expression>                       # type (expression), conversion with one argument
              ::= cv <type> _ <expression>* E                  # type (expr-list), conversion with other than one argument
              ::= tl <type> <expression>* E                    # type {expr-list}, conversion with braced-init-list argument
              ::= il <expression> E                            # {expr-list}, braced-init-list in any other context
              ::= [gs] nw <expression>* _ <type> E             # new (expr-list) type
              ::= [gs] nw <expression>* _ <type> <initializer> # new (expr-list) type (init)
              ::= [gs] na <expression>* _ <type> E             # new[] (expr-list) type
              ::= [gs] na <expression>* _ <type> <initializer> # new[] (expr-list) type (init)
              ::= [gs] dl <expression>                         # delete expression
              ::= [gs] da <expression>                         # delete[] expression
              ::= dc <type> <expression>                       # dynamic_cast<type> (expression)
              ::= sc <type> <expression>                       # static_cast<type> (expression)
              ::= cc <type> <expression>                       # const_cast<type> (expression)
              ::= rc <type> <expression>                       # reinterpret_cast<type> (expression)
              ::= ti <type>                                    # typeid (type)
              ::= te <expression>                              # typeid (expression)
              ::= st <type>                                    # sizeof (type)
              ::= sz <expression>                              # sizeof (expression)
              ::= at <type>                                    # alignof (type)
              ::= az <expression>                              # alignof (expression)
              ::= nx <expression>                              # noexcept (expression)
              ::= <template-param>
              ::= <function-param>
              ::= dt <expression> <unresolved-name>            # expr.name
              ::= pt <expression> <unresolved-name>            # expr->name
              ::= ds <expression> <expression>                 # expr.*expr
              ::= sZ <template-param>                          # sizeof...(T), size of a template parameter pack
              ::= sZ <function-param>                          # sizeof...(parameter), size of a function parameter pack
              ::= sP <template-arg>* E                         # sizeof...(T), size of a captured template parameter pack from an alias template
              ::= sp <expression>                              # expression..., pack expansion
              ::= tw <expression>                              # throw expression
              ::= tr                                           # throw with no operand (rethrow)
              ::= <unresolved-name>                            # f(p), N::f(p), ::f(p),
                                                               # freestanding dependent name (e.g., T::x),
                                                               # objectless nonstatic member reference
              ::= <expr-primary>

Variants

A unary operator expression.

A binary operator expression.

A ternary operator expression.

A prefix ++.

A prefix --.

A call with functor and arguments.

A type conversion with one argument.

A type conversion with many arguments.

A type conversion with many arguments.

A braced init list expression.

The new operator.

The global ::new operator.

The new[] operator.

The global ::new[] operator.

The delete operator.

The global ::delete operator.

The delete[] operator.

The global ::delete[] operator.

dynamic_cast<type> (expression)

static_cast<type> (expression)

const_cast<type> (expression)

reinterpret_cast<type> (expression)

typeid (type)

typeid (expression)

sizeof (type)

sizeof (expression)

alignof (type)

alignof (expression)

noexcept (expression)

A named template parameter.

A function parameter.

expr.name

expr->name

expr.*expr

sizeof...(T), size of a template parameter pack.

sizeof...(parameter), size of a function parameter pack.

sizeof...(T), size of a captured template parameter pack from an alias template.

expression..., pack expansion.

throw expression

throw with no operand

f(p), N::f(p), ::f(p), freestanding dependent name (e.g., T::x), objectless nonstatic member reference.

An <expr-primary> production.

Trait Implementations

impl Clone for Expression
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Debug for Expression
[src]

Formats the value using the given formatter.

impl PartialEq for Expression
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for Expression
[src]