Loading scripts/genksyms/parse.y +15 −18 Original line number Diff line number Diff line Loading @@ -51,6 +51,18 @@ remove_list(struct string_list **pb, struct string_list **pe) free_list(b, e); } /* Record definition of a struct/union/enum */ static void record_compound(struct string_list **keyw, struct string_list **ident, struct string_list **body, enum symbol_type type) { struct string_list *b = *body, *i = *ident, *r; r = copy_node(i); r->tag = type; r->next = (*keyw)->next; *body = r; (*keyw)->next = NULL; add_symbol(i->string, type, b, is_extern); } %} %token ASM_KEYW Loading Loading @@ -215,26 +227,11 @@ type_specifier: /* Full definitions of an s/u/e. Record it. */ | STRUCT_KEYW IDENT class_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_STRUCT; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_STRUCT, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_STRUCT); $$ = $3; } | UNION_KEYW IDENT class_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_UNION; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_UNION, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_UNION); $$ = $3; } | ENUM_KEYW IDENT enum_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_ENUM; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_ENUM, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_ENUM); $$ = $3; } /* * Anonymous enum definition. Tell add_symbol() to restart its counter. */ Loading Loading
scripts/genksyms/parse.y +15 −18 Original line number Diff line number Diff line Loading @@ -51,6 +51,18 @@ remove_list(struct string_list **pb, struct string_list **pe) free_list(b, e); } /* Record definition of a struct/union/enum */ static void record_compound(struct string_list **keyw, struct string_list **ident, struct string_list **body, enum symbol_type type) { struct string_list *b = *body, *i = *ident, *r; r = copy_node(i); r->tag = type; r->next = (*keyw)->next; *body = r; (*keyw)->next = NULL; add_symbol(i->string, type, b, is_extern); } %} %token ASM_KEYW Loading Loading @@ -215,26 +227,11 @@ type_specifier: /* Full definitions of an s/u/e. Record it. */ | STRUCT_KEYW IDENT class_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_STRUCT; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_STRUCT, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_STRUCT); $$ = $3; } | UNION_KEYW IDENT class_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_UNION; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_UNION, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_UNION); $$ = $3; } | ENUM_KEYW IDENT enum_body { struct string_list *s = *$3, *i = *$2, *r; r = copy_node(i); r->tag = SYM_ENUM; r->next = (*$1)->next; *$3 = r; (*$1)->next = NULL; add_symbol(i->string, SYM_ENUM, s, is_extern); $$ = $3; } { record_compound($1, $2, $3, SYM_ENUM); $$ = $3; } /* * Anonymous enum definition. Tell add_symbol() to restart its counter. */ Loading