gdb: Add new parser rule for structure field names
Introduces a new rule in c-exp.y for matching structure field names. This is a restructure in preparation for the next commit, this commit shouldn't result in any user visible changes. gdb/ChangeLog: * c-exp.y (field_name): New %token, and new rule. (exp): Replace uses of 'name' with 'field_name' where appropriate.
This commit is contained in:
parent
b6c95c0cc5
commit
0f5d3f636a
|
@ -1,3 +1,8 @@
|
||||||
|
2018-12-24 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
|
* c-exp.y (field_name): New %token, and new rule.
|
||||||
|
(exp): Replace uses of 'name' with 'field_name' where appropriate.
|
||||||
|
|
||||||
2018-12-24 Andrew Burgess <andrew.burgess@embecosm.com>
|
2018-12-24 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
|
|
||||||
PR gdb/13368
|
PR gdb/13368
|
||||||
|
|
13
gdb/c-exp.y
13
gdb/c-exp.y
|
@ -156,7 +156,7 @@ static void c_print_token (FILE *file, int type, YYSTYPE value);
|
||||||
%token <voidval> COMPLETE
|
%token <voidval> COMPLETE
|
||||||
%token <tsym> TYPENAME
|
%token <tsym> TYPENAME
|
||||||
%token <theclass> CLASSNAME /* ObjC Class name */
|
%token <theclass> CLASSNAME /* ObjC Class name */
|
||||||
%type <sval> name
|
%type <sval> name field_name
|
||||||
%type <svec> string_exp
|
%type <svec> string_exp
|
||||||
%type <ssym> name_not_typename
|
%type <ssym> name_not_typename
|
||||||
%type <tsym> type_name
|
%type <tsym> type_name
|
||||||
|
@ -312,13 +312,13 @@ exp : ALIGNOF '(' type_exp ')' %prec UNARY
|
||||||
{ write_exp_elt_opcode (pstate, UNOP_ALIGNOF); }
|
{ write_exp_elt_opcode (pstate, UNOP_ALIGNOF); }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : exp ARROW name
|
exp : exp ARROW field_name
|
||||||
{ write_exp_elt_opcode (pstate, STRUCTOP_PTR);
|
{ write_exp_elt_opcode (pstate, STRUCTOP_PTR);
|
||||||
write_exp_string (pstate, $3);
|
write_exp_string (pstate, $3);
|
||||||
write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
|
write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : exp ARROW name COMPLETE
|
exp : exp ARROW field_name COMPLETE
|
||||||
{ mark_struct_expression (pstate);
|
{ mark_struct_expression (pstate);
|
||||||
write_exp_elt_opcode (pstate, STRUCTOP_PTR);
|
write_exp_elt_opcode (pstate, STRUCTOP_PTR);
|
||||||
write_exp_string (pstate, $3);
|
write_exp_string (pstate, $3);
|
||||||
|
@ -360,13 +360,13 @@ exp : exp ARROW_STAR exp
|
||||||
{ write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
|
{ write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : exp '.' name
|
exp : exp '.' field_name
|
||||||
{ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
|
{ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
|
||||||
write_exp_string (pstate, $3);
|
write_exp_string (pstate, $3);
|
||||||
write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
|
write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
|
||||||
;
|
;
|
||||||
|
|
||||||
exp : exp '.' name COMPLETE
|
exp : exp '.' field_name COMPLETE
|
||||||
{ mark_struct_expression (pstate);
|
{ mark_struct_expression (pstate);
|
||||||
write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
|
write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
|
||||||
write_exp_string (pstate, $3);
|
write_exp_string (pstate, $3);
|
||||||
|
@ -1646,6 +1646,9 @@ oper: OPERATOR NEW
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
field_name
|
||||||
|
: name
|
||||||
|
;
|
||||||
|
|
||||||
name : NAME { $$ = $1.stoken; }
|
name : NAME { $$ = $1.stoken; }
|
||||||
| BLOCKNAME { $$ = $1.stoken; }
|
| BLOCKNAME { $$ = $1.stoken; }
|
||||||
|
|
Loading…
Reference in New Issue