declarator
%type <d_val> declarator
: declarator
declarator
| '(' declarator ')'
: declaration_specifiers declarator
%type <l_decl> declarator
DT_KEY_INLINE declaration_specifiers declarator
declarator {
declarator { dt_decl_member(NULL); }
| declarator DT_TOK_COLON constant_expression {
declarator: direct_declarator
| lparen declarator DT_TOK_RPAR { $$ = $2; }
| parameter_declaration_specifiers declarator {
declarator: decl1
member : advice type declarator SEMI
.declarator = typedef_specifier,
.declarator = inline_specifier,
.declarator = noreturn_specifier,
.declarator = alignas_specifier,
if (s->op->declarator)
t = s->op->declarator(t, ctx);
.declarator = auto_specifier,
if (s->op->declarator)
token = s->op->declarator(token, ctx);
.declarator = register_specifier,
static struct token *declarator(struct token *token, struct decl_state *ctx);
.declarator = static_specifier,
token = keyword->op->declarator(token->next, ctx);
.declarator = extern_specifier,
.declarator = thread_specifier,
token = declarator(next, ctx);
.declarator = const_qualifier,
.declarator = volatile_qualifier,
token = declarator(token, &ctx);
.declarator = restrict_qualifier,
token = declarator(token, &ctx);
token = declarator(token, &ctx);
.declarator = atomic_qualifier,
.declarator = typeof_specifier,
.declarator = attribute_specifier,
.declarator = struct_specifier,
.declarator = union_specifier,
.declarator = enum_specifier,
token = declarator(token, &ctx);
token = declarator(token, &ctx);
.declarator = parse_asm_declarator,
struct token *(*declarator)(struct token *token, struct decl_state *ctx);