C Types

The debugger understands the full C type specification grammar.

 

type-specifier

        : basic-type-specifier

        | struct-union-enum-type-specifier

        | typedef-type-specifier

 

basic-type-specifier

        : basic-type-name

        | type-qualifier-list basic-type-name

        | basic-type-specifier type-qualifier

        | basic-type-specifier basic-type-name

 

type-qualifier-list

        : type-qualifier

        | type-qualifier-list type-qualifier

 

type-qualifier

        : CONST

        | VOLATILE

        | LE

        | _le

        | _be

 

basic-type-name

        : VOID

        | CHAR

        | SHORT

        | INT

        | LONG

        | FLOAT

        | DOUBLE

        | SIGNED

        | UNSIGNED

 

printable-type

        : rescoped_typedef

        | type_name

 

struct-union-enum-type-specifier

        : elaborated-type-name

        | type-qualifier-list elaborated-type-name

        | struct-union-enum-type-specifier type-qualifier

 

typedef-type-specifier

        : TYPEDEFname

        | type-qualifier-list TYPEDEFname

        | typedef-type-specifier type-qualifier

 

elaborated-type-name

        : struct-or-union-specifier

        | enum-specifier

 

struct-or-union-specifier

        : struct-or-union opt-parenthesized-identifier-or-typedef-name

 

opt-parenthesized-identifier-or-typedef-name

        : identifier-or-typedef-name

        | LPAREN opt-parenthesized-identifier-or-typedef-name RPAREN

 

struct-or-union

        : STRUCT

        | UNION

 

enum-specifier

        : ENUM identifier-or-typedef-name

 

type-name

        : type-specifier

        | type-specifier abstract-declarator

        | type-qualifier-list                       // Implicit "int"

        | type-qualifier-list abstract-declarator   // Implicit "int"

 

type-name-list

        : type-name

        | type-name COMMA type-name-list

 

abstract-declarator

        : unary-abstract-declarator

        | postfix-abstract-declarator

        | postfixing-abstract-declarator

 

postfixing-abstract-declarator

        : array-abstract-declarator

        | LPAREN RPAREN

 

array-abstract-declarator

        : BRACKETS

        | LBRACKET constant-expression RBRACKET

        | array-abstract-declarator LBRACKET constant-expression RBRACKET

 

unary-abstract-declarator

        : STAR

        | STAR type-qualifier-list

        | STAR abstract-declarator

        | STAR type-qualifier-list abstract-declarator

 

postfix-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