mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-07 13:39:43 +08:00
* c-exp.y (YYPRINT): Define.
(c_print_token): New function.
This commit is contained in:
parent
71863e733e
commit
9507860ea9
@ -1,3 +1,8 @@
|
||||
2013-03-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* c-exp.y (YYPRINT): Define.
|
||||
(c_print_token): New function.
|
||||
|
||||
2013-03-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* c-exp.y (%union) <sym, ivar, ivec>: Remove.
|
||||
|
56
gdb/c-exp.y
56
gdb/c-exp.y
@ -167,6 +167,9 @@ void yyerror (char *);
|
||||
static int parse_number (char *, int, int, YYSTYPE *);
|
||||
static struct stoken operator_stoken (const char *);
|
||||
static void check_parameter_typelist (VEC (type_ptr) *);
|
||||
|
||||
static void c_print_token (FILE *file, int type, YYSTYPE value);
|
||||
#define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
|
||||
%}
|
||||
|
||||
%type <voidval> exp exp1 type_exp start variable qualified_name lcurly
|
||||
@ -3063,6 +3066,59 @@ c_parse (void)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* This is called via the YYPRINT macro when parser debugging is
|
||||
enabled. It prints a token's value. */
|
||||
|
||||
static void
|
||||
c_print_token (FILE *file, int type, YYSTYPE value)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case INT:
|
||||
fprintf (file, "typed_val_int<%s, %s>",
|
||||
TYPE_SAFE_NAME (value.typed_val_int.type),
|
||||
pulongest (value.typed_val_int.val));
|
||||
break;
|
||||
|
||||
case CHAR:
|
||||
case STRING:
|
||||
{
|
||||
char *copy = alloca (value.tsval.length + 1);
|
||||
|
||||
memcpy (copy, value.tsval.ptr, value.tsval.length);
|
||||
copy[value.tsval.length] = '\0';
|
||||
|
||||
fprintf (file, "tsval<type=%d, %s>", value.tsval.type, copy);
|
||||
}
|
||||
break;
|
||||
|
||||
case NSSTRING:
|
||||
case VARIABLE:
|
||||
fprintf (file, "sval<%s>", copy_name (value.sval));
|
||||
break;
|
||||
|
||||
case TYPENAME:
|
||||
fprintf (file, "tsym<type=%s, name=%s>",
|
||||
TYPE_SAFE_NAME (value.tsym.type),
|
||||
copy_name (value.tsym.stoken));
|
||||
break;
|
||||
|
||||
case NAME:
|
||||
case UNKNOWN_CPP_NAME:
|
||||
case NAME_OR_INT:
|
||||
case BLOCKNAME:
|
||||
fprintf (file, "ssym<name=%s, sym=%s, field_of_this=%d>",
|
||||
copy_name (value.ssym.stoken),
|
||||
(value.ssym.sym == NULL
|
||||
? "(null)" : SYMBOL_PRINT_NAME (value.ssym.sym)),
|
||||
value.ssym.is_a_field_of_this);
|
||||
break;
|
||||
|
||||
case FILENAME:
|
||||
fprintf (file, "bval<%s>", host_address_to_string (value.bval));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
yyerror (char *msg)
|
||||
|
Loading…
Reference in New Issue
Block a user