* 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.
This commit is contained in:
Akim Demaille
2002-10-20 11:16:01 +00:00
parent 95f2c9fe7d
commit 66d30cd4eb
6 changed files with 125 additions and 67 deletions

View File

@@ -1,3 +1,14 @@
2002-10-20 Akim Demaille <akim@epita.fr>
* 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 <eggert@twinsun.com> 2002-10-19 Paul Eggert <eggert@twinsun.com>
Do not create a temporary file, as that involves security and Do not create a temporary file, as that involves security and
@@ -20,7 +31,7 @@
* src/scan-skel.l (readpipe): Remove decl. * src/scan-skel.l (readpipe): Remove decl.
(scan_skel): New function, to be used in place of m4_invoke. (scan_skel): New function, to be used in place of m4_invoke.
Read from stream rather than file. Read from stream rather than file.
* lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to * 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 float, as this generates a warning on Solaris 8 + GCC 3.2 with
--enable-gcc-warnings. Instead, divide into 1.0 rather than 1; --enable-gcc-warnings. Instead, divide into 1.0 rather than 1;

View File

@@ -19,6 +19,25 @@ m4_include([c.m4])
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA # 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]) # b4_lhs_value([TYPE])
# -------------------- # --------------------
# Expansion of $<TYPE>$. # Expansion of $<TYPE>$.
@@ -174,7 +193,7 @@ typedef struct yyltype
int last_line; int last_line;
int last_column;])[ int last_column;])[
} yyltype; } yyltype;
# define YYLTYPE ]b4_ltype[ # define YYLTYPE ]b4_location_type[
# define YYLTYPE_IS_TRIVIAL 1 # define YYLTYPE_IS_TRIVIAL 1
#endif #endif
@@ -462,7 +481,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */ /* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH #ifndef YYINITDEPTH
# define YYINITDEPTH ]b4_initdepth[ # define YYINITDEPTH ]b4_stack_depth_init[
#endif #endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
@@ -477,7 +496,7 @@ int yydebug;
#endif #endif
#ifndef YYMAXDEPTH #ifndef YYMAXDEPTH
# define YYMAXDEPTH ]b4_maxdepth[ # define YYMAXDEPTH ]b4_stack_depth_max[
#endif #endif
/* Minimum number of free items on the stack allowed after an /* Minimum number of free items on the stack allowed after an

View File

@@ -19,6 +19,23 @@ m4_divert(-1)
m4_include([c.m4]) 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]) # b4_lhs_value([TYPE])
# -------------------- # --------------------
# Expansion of $<TYPE>$. # Expansion of $<TYPE>$.
@@ -33,7 +50,7 @@ m4_define([b4_lhs_value],
m4_define([b4_rhs_value], m4_define([b4_rhs_value],
[semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])]) [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() # b4_lhs_location()
# ----------------- # -----------------
@@ -145,7 +162,7 @@ b4_post_prologue
namespace yy namespace yy
{ {
class b4_name; class b4_parser_class_name;
template < typename P > template < typename P >
struct Traits struct Traits
@@ -153,47 +170,47 @@ namespace yy
}; };
template < > 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_translate]) TokenNumberType;
typedef b4_int_type_for([b4_rhs]) RhsNumberType; typedef b4_int_type_for([b4_rhs]) RhsNumberType;
typedef int StateType; typedef int StateType;
typedef yystype SemanticType; typedef yystype SemanticType;
typedef b4_ltype LocationType; typedef b4_location_type LocationType;
}; };
} }
namespace yy namespace yy
{ {
class b4_name b4_inherit class b4_parser_class_name b4_inherit
{ {
public: public:
typedef Traits< b4_name >::TokenNumberType TokenNumberType; typedef Traits< b4_parser_class_name >::TokenNumberType TokenNumberType;
typedef Traits< b4_name >::RhsNumberType RhsNumberType; typedef Traits< b4_parser_class_name >::RhsNumberType RhsNumberType;
typedef Traits< b4_name >::StateType StateType; typedef Traits< b4_parser_class_name >::StateType StateType;
typedef Traits< b4_name >::SemanticType SemanticType; typedef Traits< b4_parser_class_name >::SemanticType SemanticType;
typedef Traits< b4_name >::LocationType LocationType; typedef Traits< b4_parser_class_name >::LocationType LocationType;
typedef Stack< StateType > StateStack; typedef Stack< StateType > StateStack;
typedef Stack< SemanticType > SemanticStack; typedef Stack< SemanticType > SemanticStack;
typedef Stack< LocationType > LocationStack; typedef Stack< LocationType > LocationStack;
#if YYLSP_NEEDED #if YYLSP_NEEDED
b4_name (bool debug, b4_parser_class_name (bool debug,
LocationType initlocation[]b4_param) : LocationType initlocation[]b4_param) :
b4_constructor[]debug_ (debug), b4_constructor[]debug_ (debug),
cdebug_ (std::cerr), cdebug_ (std::cerr),
initlocation_ (initlocation) initlocation_ (initlocation)
#else #else
b4_name (bool debug[]b4_param) : b4_parser_class_name (bool debug[]b4_param) :
b4_constructor[]debug_ (debug), b4_constructor[]debug_ (debug),
cdebug_ (std::cerr) cdebug_ (std::cerr)
#endif #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 */ #endif /* !YYDEBUG */
int int
yy::b4_name::parse () yy::b4_parser_class_name::parse ()
{ {
int nerrs = 0; int nerrs = 0;
int errstatus = 0; int errstatus = 0;
@@ -606,7 +623,7 @@ yy::b4_name::parse ()
} }
void void
yy::b4_name::lex_ () yy::b4_parser_class_name::lex_ ()
{ {
#if YYLSP_NEEDED #if YYLSP_NEEDED
looka_ = yylex (&value, &location); looka_ = yylex (&value, &location);
@@ -617,9 +634,9 @@ yy::b4_name::lex_ ()
/* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing /* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
STATE-NUM. */ 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]) const b4_int_type_for([b4_pact])
yy::b4_name::pact_[[]] = yy::b4_parser_class_name::pact_[[]] =
{ {
b4_pact b4_pact
}; };
@@ -628,21 +645,21 @@ yy::b4_name::pact_[[]] =
doesn't specify something else to do. Zero means the default is an doesn't specify something else to do. Zero means the default is an
error. */ error. */
const b4_int_type_for([b4_defact]) const b4_int_type_for([b4_defact])
yy::b4_name::defact_[[]] = yy::b4_parser_class_name::defact_[[]] =
{ {
b4_defact b4_defact
}; };
/* YYPGOTO[[NTERM-NUM]]. */ /* YYPGOTO[[NTERM-NUM]]. */
const b4_int_type_for([b4_pgoto]) const b4_int_type_for([b4_pgoto])
yy::b4_name::pgoto_[[]] = yy::b4_parser_class_name::pgoto_[[]] =
{ {
b4_pgoto b4_pgoto
}; };
/* YYDEFGOTO[[NTERM-NUM]]. */ /* YYDEFGOTO[[NTERM-NUM]]. */
const b4_int_type_for([b4_defgoto]) const b4_int_type_for([b4_defgoto])
yy::b4_name::defgoto_[[]] = yy::b4_parser_class_name::defgoto_[[]] =
{ {
b4_defgoto b4_defgoto
}; };
@@ -650,16 +667,16 @@ yy::b4_name::defgoto_[[]] =
/* YYTABLE[[YYPACT[STATE-NUM]]]. What to do in state STATE-NUM. If /* YYTABLE[[YYPACT[STATE-NUM]]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says. */ 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]) const b4_int_type_for([b4_table])
yy::b4_name::table_[[]] = yy::b4_parser_class_name::table_[[]] =
{ {
b4_table b4_table
}; };
/* YYCHECK. */ /* YYCHECK. */
const b4_int_type_for([b4_check]) const b4_int_type_for([b4_check])
yy::b4_name::check_[[]] = yy::b4_parser_class_name::check_[[]] =
{ {
b4_check b4_check
}; };
@@ -668,7 +685,7 @@ yy::b4_name::check_[[]] =
/* STOS_[[STATE-NUM]] -- The (internal number of the) accessing /* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
const b4_int_type_for([b4_stos]) const b4_int_type_for([b4_stos])
yy::b4_name::stos_[[]] = yy::b4_parser_class_name::stos_[[]] =
{ {
b4_stos b4_stos
}; };
@@ -676,7 +693,7 @@ yy::b4_name::stos_[[]] =
/* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding /* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
to YYLEX-NUM. */ to YYLEX-NUM. */
const b4_int_type_for([b4_toknum]) const b4_int_type_for([b4_toknum])
yy::b4_name::token_number_[[]] = yy::b4_parser_class_name::token_number_[[]] =
{ {
b4_toknum b4_toknum
}; };
@@ -684,14 +701,14 @@ yy::b4_name::token_number_[[]] =
/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
const b4_int_type_for([b4_r1]) const b4_int_type_for([b4_r1])
yy::b4_name::r1_[[]] = yy::b4_parser_class_name::r1_[[]] =
{ {
b4_r1 b4_r1
}; };
/* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */
const b4_int_type_for([b4_r2]) const b4_int_type_for([b4_r2])
yy::b4_name::r2_[[]] = yy::b4_parser_class_name::r2_[[]] =
{ {
b4_r2 b4_r2
}; };
@@ -700,7 +717,7 @@ yy::b4_name::r2_[[]] =
/* YYTNAME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM. /* YYTNAME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
const char* const char*
const yy::b4_name::name_[[]] = const yy::b4_parser_class_name::name_[[]] =
{ {
b4_tname b4_tname
}; };
@@ -708,8 +725,8 @@ const yy::b4_name::name_[[]] =
#if YYDEBUG #if YYDEBUG
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
const yy::b4_name::RhsNumberType const yy::b4_parser_class_name::RhsNumberType
yy::b4_name::rhs_[[]] = yy::b4_parser_class_name::rhs_[[]] =
{ {
b4_rhs b4_rhs
}; };
@@ -717,22 +734,22 @@ yy::b4_name::rhs_[[]] =
/* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in /* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */ YYRHS. */
const b4_int_type_for([b4_prhs]) const b4_int_type_for([b4_prhs])
yy::b4_name::prhs_[[]] = yy::b4_parser_class_name::prhs_[[]] =
{ {
b4_prhs b4_prhs
}; };
/* YYRLINE[[YYN]] -- source line where rule number YYN was defined. */ /* YYRLINE[[YYN]] -- source line where rule number YYN was defined. */
const b4_int_type_for([b4_rline]) const b4_int_type_for([b4_rline])
yy::b4_name::rline_[[]] = yy::b4_parser_class_name::rline_[[]] =
{ {
b4_rline b4_rline
}; };
#endif #endif
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
yy::b4_name::TokenNumberType yy::b4_parser_class_name::TokenNumberType
yy::b4_name::translate_ (int token) yy::b4_parser_class_name::translate_ (int token)
{ {
static static
const TokenNumberType const TokenNumberType
@@ -746,18 +763,18 @@ yy::b4_name::translate_ (int token)
return undef_token_; return undef_token_;
} }
const int yy::b4_name::eof_ = 0; const int yy::b4_parser_class_name::eof_ = 0;
const int yy::b4_name::last_ = b4_last; const int yy::b4_parser_class_name::last_ = b4_last;
const int yy::b4_name::nnts_ = b4_nterms_number; const int yy::b4_parser_class_name::nnts_ = b4_nterms_number;
const int yy::b4_name::empty_ = -2; const int yy::b4_parser_class_name::empty_ = -2;
const int yy::b4_name::final_ = b4_final_state_number; const int yy::b4_parser_class_name::final_ = b4_final_state_number;
const int yy::b4_name::terror_ = 1; const int yy::b4_parser_class_name::terror_ = 1;
const int yy::b4_name::errcode_ = 256; const int yy::b4_parser_class_name::errcode_ = 256;
const int yy::b4_name::ntokens_ = b4_tokens_number; const int yy::b4_parser_class_name::ntokens_ = b4_tokens_number;
const int yy::b4_name::initdepth_ = b4_initdepth; const int yy::b4_parser_class_name::initdepth_ = b4_stack_depth_init;
const unsigned yy::b4_name::user_token_number_max_ = b4_user_token_number_max; const unsigned yy::b4_parser_class_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 yy::b4_parser_class_name::TokenNumberType yy::b4_name::undef_token_ = b4_undef_token_number;
b4_epilogue b4_epilogue
dnl dnl

View File

@@ -20,6 +20,27 @@ m4_include([c.m4])
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA # 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]) # b4_lhs_value([TYPE])
# -------------------- # --------------------
# Expansion of $<TYPE>$. # Expansion of $<TYPE>$.
@@ -203,7 +224,7 @@ typedef struct yyltype
int last_line; int last_line;
int last_column; int last_column;
} yyltype; } yyltype;
# define YYLTYPE b4_ltype # define YYLTYPE b4_location_type
# define YYLTYPE_IS_TRIVIAL 1 # define YYLTYPE_IS_TRIVIAL 1
#endif #endif
@@ -543,7 +564,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */ /* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH #ifndef YYINITDEPTH
# define YYINITDEPTH b4_initdepth # define YYINITDEPTH b4_stack_depth_init
#endif #endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
@@ -558,7 +579,7 @@ int yydebug;
#endif #endif
#ifndef YYMAXDEPTH #ifndef YYMAXDEPTH
# define YYMAXDEPTH b4_maxdepth # define YYMAXDEPTH b4_stack_depth_max
#endif #endif

View File

@@ -69,18 +69,8 @@ muscle_init (void)
/* FIXME: there should probably be no default here, only in the /* FIXME: there should probably be no default here, only in the
skeletons. */ skeletons. */
/* Types. */
MUSCLE_INSERT_STRING ("ltype", "yyltype");
/* Default #line formatting. */ /* Default #line formatting. */
MUSCLE_INSERT_STRING ("linef", "#line %d %s\n"); 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, void muscle_pair_list_grow (const char *muscle,
const char *a1, const char *a2) const char *a1, const char *a2)
{ {
char *val; char *pair;
obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2); obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2);
obstack_1grow (&muscle_obstack, 0); obstack_1grow (&muscle_obstack, 0);
val = obstack_finish (&muscle_obstack); pair = obstack_finish (&muscle_obstack);
muscle_grow (muscle, val, ",\n"); muscle_grow (muscle, pair, ",\n");
obstack_free (&muscle_obstack, val); obstack_free (&muscle_obstack, pair);
} }
/*-------------------------------. /*-------------------------------.

View File

@@ -661,7 +661,7 @@ prepare (void)
} }
/* Parse the skeleton file and output the needed parsers. */ /* Parse the skeleton file and output the needed parsers. */
muscle_insert ("skeleton", xstrdup (skeleton)); MUSCLE_INSERT_STRING ("skeleton", skeleton);
} }