[RFA] Token cleanup in c-exp.y

Keith Seitz
2009-08-24T22:27:31Z

[-- Attachment #1: Type: text/plain, Size: 312 bytes --]

Hi,

The attached patch "fixes" two tokens in c-exp.y, "->*" and ".*", which
were not previously recognized as tokens.

Keith

ChangeLog
2009-08-24 Keith Seitz <keiths@redhat.com>

* c-exp.y (tokentab3): Add new token, ARROW_STAR. Changed all users.
(tokentab2): Add new token, DOT_STAR. Changed all users.

[-- Attachment #2: token-fix.patch --]
[-- Type: text/plain, Size: 1535 bytes --]

Index: c-exp.y
===================================================================
RCS file: /cvs/src/src/gdb/c-exp.y,v
retrieving revision 1.59
diff -u -p -r1.59 c-exp.y
--- c-exp.y 7 Jul 2009 21:33:48 -0000 1.59
+++ c-exp.y 24 Aug 2009 20:41:09 -0000
@@ -232,7 +232,7 @@ static int parse_number (char *, int, in
%left '+' '-'
%left '*' '/' '%'
%right UNARY INCREMENT DECREMENT
-%right ARROW '.' '[' '('
+%right ARROW ARROW_STAR '.' DOT_STAR '[' '('
%token <ssym> BLOCKNAME
%token <bval> FILENAME
%type <bval> block
@@ -333,7 +333,7 @@ exp : exp ARROW qualified_name
write_exp_elt_opcode (STRUCTOP_MPTR); }
;

-exp : exp ARROW '*' exp
+exp : exp ARROW_STAR exp
{ write_exp_elt_opcode (STRUCTOP_MPTR); }
;

@@ -368,7 +368,7 @@ exp : exp '.' qualified_name
write_exp_elt_opcode (STRUCTOP_MEMBER); }
;

-exp : exp '.' '*' exp
+exp : exp DOT_STAR exp
{ write_exp_elt_opcode (STRUCTOP_MEMBER); }
;

@@ -1664,7 +1664,8 @@ struct token
static const struct token tokentab3[] =
{
{">>=", ASSIGN_MODIFY, BINOP_RSH, 0},
- {"<<=", ASSIGN_MODIFY, BINOP_LSH, 0}
+ {"<<=", ASSIGN_MODIFY, BINOP_LSH, 0},
+ {"->*", ARROW_STAR, BINOP_END, 1}
};

static const struct token tokentab2[] =
@@ -1688,7 +1689,8 @@ static const struct token tokentab2[] =
{"==", EQUAL, BINOP_END, 0},
{"!=", NOTEQUAL, BINOP_END, 0},
{"<=", LEQ, BINOP_END, 0},
- {">=", GEQ, BINOP_END, 0}
+ {">=", GEQ, BINOP_END, 0},
+ {".*", DOT_STAR, BINOP_END, 0}
};

/* Identifier-like tokens. */