diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2018-12-17 13:51:05 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2018-12-24 17:25:25 +0000 |
commit | 0f5d3f636a606e307d8d8634415cc1e313a38273 (patch) | |
tree | 3d13a4422009090a40944a17c878cea5f678e938 /gdb | |
parent | b6c95c0cc5bd60e2de86d611120bf6191f99860a (diff) | |
download | gdb-0f5d3f636a606e307d8d8634415cc1e313a38273.zip gdb-0f5d3f636a606e307d8d8634415cc1e313a38273.tar.gz gdb-0f5d3f636a606e307d8d8634415cc1e313a38273.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/c-exp.y | 13 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ced5180..5c5699e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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> + PR gdb/13368 * c-exp.y (typebase): Extend the comment. (ident_tokens): Likewise. diff --git a/gdb/c-exp.y b/gdb/c-exp.y index 447ac78..98a0df3 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -156,7 +156,7 @@ static void c_print_token (FILE *file, int type, YYSTYPE value); %token <voidval> COMPLETE %token <tsym> TYPENAME %token <theclass> CLASSNAME /* ObjC Class name */ -%type <sval> name +%type <sval> name field_name %type <svec> string_exp %type <ssym> name_not_typename %type <tsym> type_name @@ -312,13 +312,13 @@ exp : ALIGNOF '(' type_exp ')' %prec UNARY { 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_string (pstate, $3); write_exp_elt_opcode (pstate, STRUCTOP_PTR); } ; -exp : exp ARROW name COMPLETE +exp : exp ARROW field_name COMPLETE { mark_struct_expression (pstate); write_exp_elt_opcode (pstate, STRUCTOP_PTR); write_exp_string (pstate, $3); @@ -360,13 +360,13 @@ exp : exp ARROW_STAR exp { write_exp_elt_opcode (pstate, STRUCTOP_MPTR); } ; -exp : exp '.' name +exp : exp '.' field_name { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); write_exp_string (pstate, $3); write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); } ; -exp : exp '.' name COMPLETE +exp : exp '.' field_name COMPLETE { mark_struct_expression (pstate); write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); write_exp_string (pstate, $3); @@ -1646,6 +1646,9 @@ oper: OPERATOR NEW ; +field_name + : name + ; name : NAME { $$ = $1.stoken; } | BLOCKNAME { $$ = $1.stoken; } |