* 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-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>
Do not create a temporary file, as that involves security and
2002-10-19 Paul Eggert <eggert@twinsun.com>
Do not create a temporary file, as that involves security and
* 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.
* 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;
* 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;
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA
# 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 $<TYPE>$.
# b4_lhs_value([TYPE])
# --------------------
# Expansion of $<TYPE>$.
int last_line;
int last_column;])[
} yyltype;
int last_line;
int last_column;])[
} yyltype;
-# define YYLTYPE ]b4_ltype[
+# define YYLTYPE ]b4_location_type[
# define YYLTYPE_IS_TRIVIAL 1
#endif
# define YYLTYPE_IS_TRIVIAL 1
#endif
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
/* 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
#endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
#endif
#ifndef YYMAXDEPTH
#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
#endif
/* Minimum number of free items on the stack allowed after an
+## ---------------- ##
+## 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 $<TYPE>$.
# b4_lhs_value([TYPE])
# --------------------
# Expansion of $<TYPE>$.
m4_define([b4_rhs_value],
[semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])])
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()
# -----------------
# b4_lhs_location()
# -----------------
+ class b4_parser_class_name;
template < typename P >
struct Traits
template < typename P >
struct Traits
- 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_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;
- class b4_name b4_inherit
+ class b4_parser_class_name b4_inherit
- 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
typedef Stack< StateType > StateStack;
typedef Stack< SemanticType > SemanticStack;
typedef Stack< LocationType > LocationStack;
#if YYLSP_NEEDED
+ b4_parser_class_name (bool debug,
LocationType initlocation[]b4_param) :
b4_constructor[]debug_ (debug),
cdebug_ (std::cerr),
initlocation_ (initlocation)
#else
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
{
}
b4_constructor[]debug_ (debug),
cdebug_ (std::cerr)
#endif
{
}
+ virtual ~b4_parser_class_name ()
#endif /* !YYDEBUG */
int
#endif /* !YYDEBUG */
int
+yy::b4_parser_class_name::parse ()
{
int nerrs = 0;
int errstatus = 0;
{
int nerrs = 0;
int errstatus = 0;
+yy::b4_parser_class_name::lex_ ()
{
#if YYLSP_NEEDED
looka_ = yylex (&value, &location);
{
#if YYLSP_NEEDED
looka_ = yylex (&value, &location);
/* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
STATE-NUM. */
/* 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])
const b4_int_type_for([b4_pact])
-yy::b4_name::pact_[[]] =
+yy::b4_parser_class_name::pact_[[]] =
doesn't specify something else to do. Zero means the default is an
error. */
const b4_int_type_for([b4_defact])
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])
{
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])
{
b4_pgoto
};
/* YYDEFGOTO[[NTERM-NUM]]. */
const b4_int_type_for([b4_defgoto])
-yy::b4_name::defgoto_[[]] =
+yy::b4_parser_class_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. */
/* 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])
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])
{
b4_table
};
/* YYCHECK. */
const b4_int_type_for([b4_check])
-yy::b4_name::check_[[]] =
+yy::b4_parser_class_name::check_[[]] =
/* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
const b4_int_type_for([b4_stos])
/* 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_[[]] =
/* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
to YYLEX-NUM. */
const b4_int_type_for([b4_toknum])
/* 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_[[]] =
/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
const b4_int_type_for([b4_r1])
/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
const b4_int_type_for([b4_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])
{
b4_r1
};
/* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */
const b4_int_type_for([b4_r2])
+yy::b4_parser_class_name::r2_[[]] =
/* YYTNAME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
const char*
/* 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_[[]] =
#if YYDEBUG
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
#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_[[]] =
/* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
const b4_int_type_for([b4_prhs])
/* 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])
{
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. */
{
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
{
static
const TokenNumberType
-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;
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA
# 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 $<TYPE>$.
# b4_lhs_value([TYPE])
# --------------------
# Expansion of $<TYPE>$.
int last_line;
int last_column;
} yyltype;
int last_line;
int last_column;
} yyltype;
-# define YYLTYPE b4_ltype
+# define YYLTYPE b4_location_type
# define YYLTYPE_IS_TRIVIAL 1
#endif
# define YYLTYPE_IS_TRIVIAL 1
#endif
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
/* 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
#endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
#endif
#ifndef YYMAXDEPTH
#endif
#ifndef YYMAXDEPTH
-# define YYMAXDEPTH b4_maxdepth
+# define YYMAXDEPTH b4_stack_depth_max
/* FIXME: there should probably be no default here, only in the
skeletons. */
/* 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");
/* 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");
void muscle_pair_list_grow (const char *muscle,
const char *a1, const char *a2)
{
void muscle_pair_list_grow (const char *muscle,
const char *a1, const char *a2)
{
obstack_fgrow2 (&muscle_obstack, "[[[%s]], [[%s]]]", a1, a2);
obstack_1grow (&muscle_obstack, 0);
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);
}
/*-------------------------------.
}
/*-------------------------------.
}
/* 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);