This section gives information on the following C support features:
The debugger has an almost complete understanding of C expressions, given the general restrictions.
constant-expression
The lookup rules are almost always correct for C.
identifier-or-typedef-name
The numeric constants are treated exactly the same as in C. The enumeration constant identifiers go though the same grammar paths as variable identifiers, which has basically the same effect as the C semantics.
primary-expression
| constant
| string-literal-list
: string
| string-literal-list string
constant
The C implementation of rescoped expressions is the following:
| qual-typedef-opt TICK TYPEDEFname
Following is the C implementation of calls.
call-expression
function-call
: postfix-expression LPAREN [arg-expression-list] RPAREN
Following is the C implementation of addresses.
address
: AMPERSAND postfix-expression
: address
The C implementation of loc is the following:
loc
The debugger understands the full C type specification grammar.
| struct-union-enum-type-specifier
| type-qualifier-list basic-type-name
| basic-type-specifier type-qualifier
| basic-type-specifier basic-type-name
| type-qualifier-list type-qualifier
: CONST
| VOLATILE
| LE
| _le
| _be
: VOID
| CHAR
| SHORT
| INT
| LONG
| FLOAT
| DOUBLE
| SIGNED
| UNSIGNED
: rescoped_typedef
| type_name
struct-union-enum-type-specifier
| type-qualifier-list elaborated-type-name
| struct-union-enum-type-specifier type-qualifier
| type-qualifier-list TYPEDEFname
| typedef-type-specifier type-qualifier
: struct-or-union opt-parenthesized-identifier-or-typedef-name
opt-parenthesized-identifier-or-typedef-name
| LPAREN opt-parenthesized-identifier-or-typedef-name RPAREN
: STRUCT
| UNION
: ENUM identifier-or-typedef-name
| type-specifier abstract-declarator
| type-qualifier-list // Implicit "int"
| type-qualifier-list abstract-declarator // Implicit "int"
| type-name COMMA type-name-list
| postfixing-abstract-declarator
postfixing-abstract-declarator
: BRACKETS
| LBRACKET constant-expression RBRACKET
| array-abstract-declarator LBRACKET constant-expression RBRACKET
: STAR
| STAR type-qualifier-list abstract-declarator
: LPAREN unary-abstract-declarator RPAREN
| LPAREN postfix-abstract-declarator RPAREN
| LPAREN postfixing-abstract-declarator RPAREN
| LPAREN unary-abstract-declarator RPAREN postfixing-abstract-declarator
The following expressions all have their usual C semantics:
| unary-expression ASSIGNOP assignment-expression
| unary-expression MULTassign assignment-expression
| unary-expression DIVassign assignment-expression
| unary-expression MODassign assignment-expression
| unary-expression PLUSassign assignment-expression
| unary-expression MINUSassign assignment-expression
| unary-expression LSassign assignment-expression
| unary-expression RSassign assignment-expression
| unary-expression ANDassign assignment-expression
| unary-expression ERassign assignment-expression
| unary-expression ORassign assignment-expression
| logical-OR-expression QUESTION expression COLON conditional-expression
| logical-OR-expression OROR logical-AND-expression
| logical-AND-expression ANDAND inclusive-OR-expression
| inclusive-OR-expression OR inclusive-OR-expression
| exclusive-OR-expression HAT AND-expression
| AND-expression AMPERSAND equality-expression
| equality-expression EQ relational-expression
| equality-expression NE relational-expression
| relational-expression LESS shift-expression
| relational-expression GREATER shift-expression
| relational-expression LE shift-expression
| relational-expression GE shift-expression
| shift-expression LS additive-expression
| shift-expression RS additive-expression
| additive-expression PLUS multiplicative-expression
| additive-expression MINUS multiplicative-expression
| multiplicative-expression STAR cast-expression
| multiplicative-expression SLASH cast-expression
| multiplicative-expression MOD cast-expression
| LPAREN type-name RPAREN cast-expression
| INCR unary-expression
| DECR unary-expression
| SIZEOF unary-expression
| SIZEOF LPAREN type-name RPAREN
| postfix-expression LBRACKET expression RBRACKET
| postfix-expression LPAREN type-name-list RPAREN
| postfix-expression DOT identifier-or-typedef-name
| postfix-expression ARROW identifier-or-typedef-name
| postfix-expression INCR
| postfix-expression DECR