From 66d30cd4eb907af83dffa8ed7db84485a28663dc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 20 Oct 2002 11:16:01 +0000 Subject: [PATCH] * src/output.c (prepare): Use MUSCLE_INSERT_STRING. * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as `pair'. (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth', `name' to... * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type) (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name): These. --- ChangeLog | 13 +++++- data/glr.c | 25 +++++++++-- data/lalr1.cc | 109 +++++++++++++++++++++++++++-------------------- data/yacc.c | 27 ++++++++++-- src/muscle_tab.c | 18 ++------ src/output.c | 2 +- 6 files changed, 126 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index d75e3574..505838a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2002-10-20 Akim Demaille + + * src/output.c (prepare): Use MUSCLE_INSERT_STRING. + * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as + `pair'. + (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth', + `name' to... + * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type) + (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name): + These. + 2002-10-19 Paul Eggert Do not create a temporary file, as that involves security and @@ -20,7 +31,7 @@ * src/scan-skel.l (readpipe): Remove decl. (scan_skel): New function, to be used in place of m4_invoke. Read from stream rather than file. - + * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to float, as this generates a warning on Solaris 8 + GCC 3.2 with --enable-gcc-warnings. Instead, divide into 1.0 rather than 1; diff --git a/data/glr.c b/data/glr.c index cf556dbb..45e2540a 100644 --- a/data/glr.c +++ b/data/glr.c @@ -19,6 +19,25 @@ m4_include([c.m4]) # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA + +## ---------------- ## +## Default values. ## +## ---------------- ## + +# Stack parameters. +m4_define_default([b4_stack_depth_max], [10000]) +m4_define_default([b4_stack_depth_init], [200]) + +# Location type. +m4_define_default([b4_location_type], [yyltype]) + + + +## ----------------- ## +## Semantic Values. ## +## ----------------- ## + + # b4_lhs_value([TYPE]) # -------------------- # Expansion of $$. @@ -174,7 +193,7 @@ typedef struct yyltype int last_line; int last_column;])[ } yyltype; -# define YYLTYPE ]b4_ltype[ +# define YYLTYPE ]b4_location_type[ # define YYLTYPE_IS_TRIVIAL 1 #endif @@ -462,7 +481,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -# define YYINITDEPTH ]b4_initdepth[ +# define YYINITDEPTH ]b4_stack_depth_init[ #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only @@ -477,7 +496,7 @@ int yydebug; #endif #ifndef YYMAXDEPTH -# define YYMAXDEPTH ]b4_maxdepth[ +# define YYMAXDEPTH ]b4_stack_depth_max[ #endif /* Minimum number of free items on the stack allowed after an diff --git a/data/lalr1.cc b/data/lalr1.cc index 2e4d47da..22e8c090 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -19,6 +19,23 @@ m4_divert(-1) m4_include([c.m4]) +## ---------------- ## +## Default values. ## +## ---------------- ## + +# Stack parameters. +m4_define_default([b4_stack_depth_init], [200]) + +# Default Parser class name. +m4_define_default([b4_parser_class_name], [Parser]) + + + +## ----------------- ## +## Semantic Values. ## +## ----------------- ## + + # b4_lhs_value([TYPE]) # -------------------- # Expansion of $$. @@ -33,7 +50,7 @@ m4_define([b4_lhs_value], m4_define([b4_rhs_value], [semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])]) -m4_define_default([b4_ltype], [Location]) +m4_define_default([b4_location_type], [Location]) # b4_lhs_location() # ----------------- @@ -145,7 +162,7 @@ b4_post_prologue namespace yy { - class b4_name; + class b4_parser_class_name; template < typename P > struct Traits @@ -153,47 +170,47 @@ namespace yy }; template < > - struct Traits< b4_name > + struct Traits< b4_parser_class_name > { typedef b4_int_type_for([b4_translate]) TokenNumberType; typedef b4_int_type_for([b4_rhs]) RhsNumberType; typedef int StateType; typedef yystype SemanticType; - typedef b4_ltype LocationType; + typedef b4_location_type LocationType; }; } namespace yy { - class b4_name b4_inherit + class b4_parser_class_name b4_inherit { public: - typedef Traits< b4_name >::TokenNumberType TokenNumberType; - typedef Traits< b4_name >::RhsNumberType RhsNumberType; - typedef Traits< b4_name >::StateType StateType; - typedef Traits< b4_name >::SemanticType SemanticType; - typedef Traits< b4_name >::LocationType LocationType; + typedef Traits< b4_parser_class_name >::TokenNumberType TokenNumberType; + typedef Traits< b4_parser_class_name >::RhsNumberType RhsNumberType; + typedef Traits< b4_parser_class_name >::StateType StateType; + typedef Traits< b4_parser_class_name >::SemanticType SemanticType; + typedef Traits< b4_parser_class_name >::LocationType LocationType; typedef Stack< StateType > StateStack; typedef Stack< SemanticType > SemanticStack; typedef Stack< LocationType > LocationStack; #if YYLSP_NEEDED - b4_name (bool debug, + b4_parser_class_name (bool debug, LocationType initlocation[]b4_param) : b4_constructor[]debug_ (debug), cdebug_ (std::cerr), initlocation_ (initlocation) #else - b4_name (bool debug[]b4_param) : + b4_parser_class_name (bool debug[]b4_param) : b4_constructor[]debug_ (debug), cdebug_ (std::cerr) #endif { } - virtual ~b4_name () + virtual ~b4_parser_class_name () { } @@ -296,7 +313,7 @@ b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison], #endif /* !YYDEBUG */ int -yy::b4_name::parse () +yy::b4_parser_class_name::parse () { int nerrs = 0; int errstatus = 0; @@ -606,7 +623,7 @@ yy::b4_name::parse () } void -yy::b4_name::lex_ () +yy::b4_parser_class_name::lex_ () { #if YYLSP_NEEDED looka_ = yylex (&value, &location); @@ -617,9 +634,9 @@ yy::b4_name::lex_ () /* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing STATE-NUM. */ -const b4_int_type_for([b4_pact]) yy::b4_name::pact_ninf_ = b4_pact_ninf; +const b4_int_type_for([b4_pact]) yy::b4_parser_class_name::pact_ninf_ = b4_pact_ninf; const b4_int_type_for([b4_pact]) -yy::b4_name::pact_[[]] = +yy::b4_parser_class_name::pact_[[]] = { b4_pact }; @@ -628,21 +645,21 @@ yy::b4_name::pact_[[]] = doesn't specify something else to do. Zero means the default is an error. */ const b4_int_type_for([b4_defact]) -yy::b4_name::defact_[[]] = +yy::b4_parser_class_name::defact_[[]] = { b4_defact }; /* YYPGOTO[[NTERM-NUM]]. */ const b4_int_type_for([b4_pgoto]) -yy::b4_name::pgoto_[[]] = +yy::b4_parser_class_name::pgoto_[[]] = { b4_pgoto }; /* YYDEFGOTO[[NTERM-NUM]]. */ const b4_int_type_for([b4_defgoto]) -yy::b4_name::defgoto_[[]] = +yy::b4_parser_class_name::defgoto_[[]] = { b4_defgoto }; @@ -650,16 +667,16 @@ yy::b4_name::defgoto_[[]] = /* YYTABLE[[YYPACT[STATE-NUM]]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. */ -const b4_int_type_for([b4_table]) yy::b4_name::table_ninf_ = b4_table_ninf; +const b4_int_type_for([b4_table]) yy::b4_parser_class_name::table_ninf_ = b4_table_ninf; const b4_int_type_for([b4_table]) -yy::b4_name::table_[[]] = +yy::b4_parser_class_name::table_[[]] = { b4_table }; /* YYCHECK. */ const b4_int_type_for([b4_check]) -yy::b4_name::check_[[]] = +yy::b4_parser_class_name::check_[[]] = { b4_check }; @@ -668,7 +685,7 @@ yy::b4_name::check_[[]] = /* STOS_[[STATE-NUM]] -- The (internal number of the) accessing symbol of state STATE-NUM. */ const b4_int_type_for([b4_stos]) -yy::b4_name::stos_[[]] = +yy::b4_parser_class_name::stos_[[]] = { b4_stos }; @@ -676,7 +693,7 @@ yy::b4_name::stos_[[]] = /* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding to YYLEX-NUM. */ const b4_int_type_for([b4_toknum]) -yy::b4_name::token_number_[[]] = +yy::b4_parser_class_name::token_number_[[]] = { b4_toknum }; @@ -684,14 +701,14 @@ yy::b4_name::token_number_[[]] = /* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */ const b4_int_type_for([b4_r1]) -yy::b4_name::r1_[[]] = +yy::b4_parser_class_name::r1_[[]] = { b4_r1 }; /* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */ const b4_int_type_for([b4_r2]) -yy::b4_name::r2_[[]] = +yy::b4_parser_class_name::r2_[[]] = { b4_r2 }; @@ -700,7 +717,7 @@ yy::b4_name::r2_[[]] = /* YYTNAME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ const char* -const yy::b4_name::name_[[]] = +const yy::b4_parser_class_name::name_[[]] = { b4_tname }; @@ -708,8 +725,8 @@ const yy::b4_name::name_[[]] = #if YYDEBUG /* YYRHS -- A `-1'-separated list of the rules' RHS. */ -const yy::b4_name::RhsNumberType -yy::b4_name::rhs_[[]] = +const yy::b4_parser_class_name::RhsNumberType +yy::b4_parser_class_name::rhs_[[]] = { b4_rhs }; @@ -717,22 +734,22 @@ yy::b4_name::rhs_[[]] = /* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ const b4_int_type_for([b4_prhs]) -yy::b4_name::prhs_[[]] = +yy::b4_parser_class_name::prhs_[[]] = { b4_prhs }; /* YYRLINE[[YYN]] -- source line where rule number YYN was defined. */ const b4_int_type_for([b4_rline]) -yy::b4_name::rline_[[]] = +yy::b4_parser_class_name::rline_[[]] = { b4_rline }; #endif /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -yy::b4_name::TokenNumberType -yy::b4_name::translate_ (int token) +yy::b4_parser_class_name::TokenNumberType +yy::b4_parser_class_name::translate_ (int token) { static const TokenNumberType @@ -746,18 +763,18 @@ yy::b4_name::translate_ (int token) return undef_token_; } -const int yy::b4_name::eof_ = 0; -const int yy::b4_name::last_ = b4_last; -const int yy::b4_name::nnts_ = b4_nterms_number; -const int yy::b4_name::empty_ = -2; -const int yy::b4_name::final_ = b4_final_state_number; -const int yy::b4_name::terror_ = 1; -const int yy::b4_name::errcode_ = 256; -const int yy::b4_name::ntokens_ = b4_tokens_number; -const int yy::b4_name::initdepth_ = b4_initdepth; - -const unsigned yy::b4_name::user_token_number_max_ = b4_user_token_number_max; -const yy::b4_name::TokenNumberType yy::b4_name::undef_token_ = b4_undef_token_number; +const int yy::b4_parser_class_name::eof_ = 0; +const int yy::b4_parser_class_name::last_ = b4_last; +const int yy::b4_parser_class_name::nnts_ = b4_nterms_number; +const int yy::b4_parser_class_name::empty_ = -2; +const int yy::b4_parser_class_name::final_ = b4_final_state_number; +const int yy::b4_parser_class_name::terror_ = 1; +const int yy::b4_parser_class_name::errcode_ = 256; +const int yy::b4_parser_class_name::ntokens_ = b4_tokens_number; +const int yy::b4_parser_class_name::initdepth_ = b4_stack_depth_init; + +const unsigned yy::b4_parser_class_name::user_token_number_max_ = b4_user_token_number_max; +const yy::b4_parser_class_name::TokenNumberType yy::b4_name::undef_token_ = b4_undef_token_number; b4_epilogue dnl diff --git a/data/yacc.c b/data/yacc.c index 35e8da4f..7eb2ad97 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -20,6 +20,27 @@ m4_include([c.m4]) # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA + + +## ---------------- ## +## Default values. ## +## ---------------- ## + +# Stack parameters. +m4_define_default([b4_stack_depth_max], [10000]) +m4_define_default([b4_stack_depth_init], [200]) + +# Location type. +m4_define_default([b4_location_type], [yyltype]) + + + + +## ----------------- ## +## Semantic Values. ## +## ----------------- ## + + # b4_lhs_value([TYPE]) # -------------------- # Expansion of $$. @@ -203,7 +224,7 @@ typedef struct yyltype int last_line; int last_column; } yyltype; -# define YYLTYPE b4_ltype +# define YYLTYPE b4_location_type # define YYLTYPE_IS_TRIVIAL 1 #endif @@ -543,7 +564,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -# define YYINITDEPTH b4_initdepth +# define YYINITDEPTH b4_stack_depth_init #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only @@ -558,7 +579,7 @@ int yydebug; #endif #ifndef YYMAXDEPTH -# define YYMAXDEPTH b4_maxdepth +# define YYMAXDEPTH b4_stack_depth_max #endif diff --git a/src/muscle_tab.c b/src/muscle_tab.c index 085b838d..552cf96b 100644 --- a/src/muscle_tab.c +++ b/src/muscle_tab.c @@ -69,18 +69,8 @@ muscle_init (void) /* FIXME: there should probably be no default here, only in the skeletons. */ - /* Types. */ - MUSCLE_INSERT_STRING ("ltype", "yyltype"); - /* Default #line formatting. */ MUSCLE_INSERT_STRING ("linef", "#line %d %s\n"); - - /* Stack parameters. */ - MUSCLE_INSERT_STRING ("maxdepth", "10000"); - MUSCLE_INSERT_STRING ("initdepth", "200"); - - /* C++ macros. */ - MUSCLE_INSERT_STRING ("name", "Parser"); } @@ -173,12 +163,12 @@ muscle_grow (const char *key, const char *val, const char *separator) void muscle_pair_list_grow (const char *muscle, const char *a1, const char *a2) { - char *val; + char *pair; obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2); obstack_1grow (&muscle_obstack, 0); - val = obstack_finish (&muscle_obstack); - muscle_grow (muscle, val, ",\n"); - obstack_free (&muscle_obstack, val); + pair = obstack_finish (&muscle_obstack); + muscle_grow (muscle, pair, ",\n"); + obstack_free (&muscle_obstack, pair); } /*-------------------------------. diff --git a/src/output.c b/src/output.c index a3680250..cac2e01c 100644 --- a/src/output.c +++ b/src/output.c @@ -661,7 +661,7 @@ prepare (void) } /* Parse the skeleton file and output the needed parsers. */ - muscle_insert ("skeleton", xstrdup (skeleton)); + MUSCLE_INSERT_STRING ("skeleton", skeleton); } -- 2.45.2