Use yy-remap.h in cp-name-parser.y

This changes cp-name-parser.y to use yy-remap.h, rather than its old
manual approach.

This required declaring parser_fprintf in cp-name-parser.y.
parser-defs.h can't be included here because parser-defs.h declares a
global "lexptr", which conflicts with the local one in
cp-name-parser.y.  This is only temporary, and will be cleaned up
later in the series.

gdb/ChangeLog
2018-06-01  Tom Tromey  <tom@tromey.com>

	* cp-name-parser.y (parser_fprintf): Declare.
	(GDB_YY_REMAP_PREFIX): Define.
	Include yy-remap.h.  Don't redefine yy* identifiers.
This commit is contained in:
Tom Tromey 2018-05-29 12:20:09 -06:00
parent 3513a6bb20
commit 55b6c98496
2 changed files with 14 additions and 54 deletions

View File

@ -1,3 +1,9 @@
2018-06-01 Tom Tromey <tom@tromey.com>
* cp-name-parser.y (parser_fprintf): Declare.
(GDB_YY_REMAP_PREFIX): Define.
Include yy-remap.h. Don't redefine yy* identifiers.
2018-06-01 Tom Tromey <tom@tromey.com>
* python/py-type.c (typy_legacy_template_argument): Update.

View File

@ -37,6 +37,14 @@
#include "cp-support.h"
#include "c-support.h"
/* Function used to avoid direct calls to fprintf
in the code generated by the bison parser. */
extern void parser_fprintf (FILE *, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
#define GDB_YY_REMAP_PREFIX cpname
#include "yy-remap.h"
/* Bison does not make it easy to create a parser without global
state, unfortunately. Here are all the global variables used
in this parser. */
@ -118,60 +126,6 @@ static struct demangle_component *d_binary (const char *,
#define INT_SIGNED (1 << 4)
#define INT_UNSIGNED (1 << 5)
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
yacc generated parsers in gdb. Note that these are only the variables
produced by yacc. If other parser generators (bison, byacc, etc) produce
additional global names that conflict at link time, then those parser
generators need to be fixed instead of adding those names to this list. */
#define yymaxdepth cpname_maxdepth
#define yyparse cpname_parse
#define yylex cpname_lex
#define yyerror cpname_error
#define yylval cpname_lval
#define yychar cpname_char
#define yydebug cpname_debug
#define yypact cpname_pact
#define yyr1 cpname_r1
#define yyr2 cpname_r2
#define yydef cpname_def
#define yychk cpname_chk
#define yypgo cpname_pgo
#define yyact cpname_act
#define yyexca cpname_exca
#define yyerrflag cpname_errflag
#define yynerrs cpname_nerrs
#define yyps cpname_ps
#define yypv cpname_pv
#define yys cpname_s
#define yy_yys cpname_yys
#define yystate cpname_state
#define yytmp cpname_tmp
#define yyv cpname_v
#define yy_yyv cpname_yyv
#define yyval cpname_val
#define yylloc cpname_lloc
#define yyreds cpname_reds /* With YYDEBUG defined */
#define yytoks cpname_toks /* With YYDEBUG defined */
#define yyname cpname_name /* With YYDEBUG defined */
#define yyrule cpname_rule /* With YYDEBUG defined */
#define yylhs cpname_yylhs
#define yylen cpname_yylen
#define yydefred cpname_yydefred
#define yydgoto cpname_yydgoto
#define yysindex cpname_yysindex
#define yyrindex cpname_yyrindex
#define yygindex cpname_yygindex
#define yytable cpname_yytable
#define yycheck cpname_yycheck
#define yyss cpname_yyss
#define yysslim cpname_yysslim
#define yyssp cpname_yyssp
#define yystacksize cpname_yystacksize
#define yyvs cpname_yyvs
#define yyvsp cpname_yyvsp
int yyparse (void);
static int yylex (void);
static void yyerror (const char *);