* data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...

* data/c.m4: here.
This commit is contained in:
Akim Demaille
2002-10-20 11:17:20 +00:00
parent 66d30cd4eb
commit 21964f4394
5 changed files with 53 additions and 64 deletions

View File

@@ -1,3 +1,8 @@
2002-10-20 Akim Demaille <akim@epita.fr>
* data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to...
* data/c.m4: here.
2002-10-20 Akim Demaille <akim@epita.fr> 2002-10-20 Akim Demaille <akim@epita.fr>
* src/output.c (prepare): Use MUSCLE_INSERT_STRING. * src/output.c (prepare): Use MUSCLE_INSERT_STRING.

View File

@@ -20,7 +20,7 @@ m4_divert(-1) -*- Autoconf -*-
## ----------- ## ## ----------- ##
## Copuright. ## ## Copyright. ##
## ----------- ## ## ----------- ##
# b4_copyright(TITLE, YEARS) # b4_copyright(TITLE, YEARS)
@@ -195,3 +195,27 @@ m4_define([b4_c_knr_arg_decls],
m4_define([b4_c_knr_arg_decl], m4_define([b4_c_knr_arg_decl],
[ $1 $2;]) [ $1 $2;])
## ------------------ ##
## Decoding options. ##
## ------------------ ##
# b4_location_if(IF-TRUE, IF-FALSE)
# ---------------------------------
# Expand IF-TRUE, if locations are used, IF-FALSE otherwise.
m4_define([b4_location_if],
[m4_if(b4_locations_flag, [1],
[$1],
[$2])])
# b4_pure_if(IF-TRUE, IF-FALSE)
# -----------------------------
# Expand IF-TRUE, if %pure-parser, IF-FALSE otherwise.
m4_define([b4_pure_if],
[m4_if(b4_pure, [1],
[$1],
[$2])])

View File

@@ -31,6 +31,14 @@ m4_define_default([b4_stack_depth_init], [200])
# Location type. # Location type.
m4_define_default([b4_location_type], [yyltype]) m4_define_default([b4_location_type], [yyltype])
# Accumule in b4_lex_param all the yylex arguments.
# Yes, this is quite ugly...
m4_define([b4_lex_param],
m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[yylvalp]]][]dnl
b4_location_if([, [[YYLTYPE *], [yyllocp]]])])dnl
m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
m4_define_default([b4_parse_param])
## ----------------- ## ## ----------------- ##
@@ -58,15 +66,6 @@ m4_define([b4_rhs_value],
## Locations. ## ## Locations. ##
## ----------- ## ## ----------- ##
# b4_location_if(IF-TRUE, IF-FALSE)
# ---------------------------------
# Expand IF-TRUE, if locations are used, IF-FALSE otherwise.
m4_define([b4_location_if],
[m4_if(b4_locations_flag, [1],
[$1],
[$2])])
# b4_lhs_location() # b4_lhs_location()
# ----------------- # -----------------
# Expansion of @$. # Expansion of @$.
@@ -83,19 +82,6 @@ m4_define([b4_rhs_location],
## -------------- ##
## %pure-parser. ##
## -------------- ##
# b4_pure_if(IF-TRUE, IF-FALSE)
# -----------------------------
# Expand IF-TRUE, if %pure-parser, IF-FALSE otherwise.
m4_define([b4_pure_if],
[m4_if(b4_pure, [1],
[$1],
[$2])])
## ------------------- ## ## ------------------- ##
## Output file names. ## ## Output file names. ##
## ------------------- ## ## ------------------- ##
@@ -428,18 +414,10 @@ int yyparse (void);
#endif #endif
/* YYLEX -- calling `yylex' with the right arguments. */ /* YYLEX -- calling `yylex' with the right arguments. */
#define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
]b4_pure_if( ]b4_pure_if(
[ [
#ifdef YYLEX_PARAM
# define YYLEX yylex (yylvalp, b4_location_if([yyllocp, ])YYLEX_PARAM)
#else
# define YYLEX yylex (yylvalp[]b4_location_if([, yyllocp]))
#endif],
[#define YYLEX yylex ()])
b4_pure_if(
[
#undef yynerrs #undef yynerrs
#define yynerrs (yystack->yyerrcnt) #define yynerrs (yystack->yyerrcnt)
#undef yychar #undef yychar
@@ -1712,9 +1690,9 @@ yyparse (YYPARSE_PARAM_ARG)
while (yytrue) while (yytrue)
{ {
/* For efficiency, we have two loops, of which the first of which /* For efficiency, we have two loops, the first of which is
* is specialized to deterministic operation (single stack, no specialized to deterministic operation (single stack, no
* potential ambiguity). */ potential ambiguity). */
/* Standard mode */ /* Standard mode */
while (yytrue) while (yytrue)

View File

@@ -33,7 +33,12 @@ m4_define_default([b4_stack_depth_init], [200])
# Location type. # Location type.
m4_define_default([b4_location_type], [yyltype]) m4_define_default([b4_location_type], [yyltype])
# Accumule in b4_lex_param all the yylex arguments.
# Yes, this is quite ugly...
m4_define([b4_lex_param],
m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
b4_location_if([, [[YYLTYPE *], [&yylloc]]])])dnl
m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
## ----------------- ## ## ----------------- ##
@@ -61,15 +66,6 @@ m4_define([b4_rhs_value],
## Locations. ## ## Locations. ##
## ----------- ## ## ----------- ##
# b4_location_if(IF-TRUE, IF-FALSE)
# ---------------------------------
# Expand IF-TRUE, if locations are used, IF-FALSE otherwise.
m4_define([b4_location_if],
[m4_if(b4_locations_flag, [1],
[$1],
[$2])])
# b4_lhs_location() # b4_lhs_location()
# ----------------- # -----------------
# Expansion of @$. # Expansion of @$.
@@ -86,19 +82,6 @@ m4_define([b4_rhs_location],
## -------------- ##
## %pure-parser. ##
## -------------- ##
# b4_pure_if(IF-TRUE, IF-FALSE)
# -----------------------------
# Expand IF-TRUE, if %pure-parser, IF-FALSE otherwise.
m4_define([b4_pure_if],
[m4_if(b4_pure, [1],
[$1],
[$2])])
## ------------------- ## ## ------------------- ##
## Output file names. ## ## Output file names. ##
## ------------------- ## ## ------------------- ##
@@ -530,10 +513,7 @@ while (0)
#ifdef YYLEX_PARAM #ifdef YYLEX_PARAM
# define YYLEX yylex (b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])YYLEX_PARAM) # define YYLEX yylex (b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])YYLEX_PARAM)
#else #else
# define YYLEX b4_c_function_call([yylex], [int], # define YYLEX b4_c_function_call([yylex], [int], b4_lex_param)
b4_pure_if([[[[]], [[&yylval]]],
b4_location_if([[[], [&yylloc]],])])
m4_fst(b4_lex_param))
#endif #endif
/* Enable debugging if requested. */ /* Enable debugging if requested. */

View File

@@ -237,8 +237,8 @@ yylex (LEX_FORMALS)
{ {
init = 0; init = 0;
#if YYLSP_NEEDED #if YYLSP_NEEDED
yylloc.last_column = 1; LOC.last_column = 1;
yylloc.last_line = 1; LOC.last_line = 1;
#endif #endif
} }
@@ -536,3 +536,5 @@ AT_CHECK_CALC_GLR([%error-verbose %locations --defines --name-prefix=calc --verb
AT_CHECK_CALC_GLR([%debug]) AT_CHECK_CALC_GLR([%debug])
AT_CHECK_CALC_GLR([%error-verbose %debug %locations --defines --name-prefix=calc --verbose --yacc]) AT_CHECK_CALC_GLR([%error-verbose %debug %locations --defines --name-prefix=calc --verbose --yacc])
# AT_CHECK_CALC_GLR([%pure-parser %error-verbose %debug %locations --defines --name-prefix=calc --verbose --yacc])