bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

b4_pure_if


From: Akim Demaille
Subject: b4_pure_if
Date: 19 Jun 2002 12:00:30 +0200
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter)

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * data/bison.simple (b4_pure_if): New.
        Use it instead of #ifdef YYPURE.

Index: data/bison.simple
===================================================================
RCS file: /cvsroot/bison/bison/data/bison.simple,v
retrieving revision 1.39
diff -u -u -r1.39 bison.simple
--- data/bison.simple 19 Jun 2002 09:07:36 -0000 1.39
+++ data/bison.simple 19 Jun 2002 09:59:35 -0000
@@ -63,6 +63,19 @@
 
 
 
+## -------------- ##
+## %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.  ##
 ## ------------------- ##
@@ -522,15 +535,13 @@
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
-#if YYPURE
-# ifdef YYLEX_PARAM
-#  define YYLEX                yylex (&yylval, b4_location_if([&yylloc, 
])YYLEX_PARAM)
-# else
-#  define YYLEX                yylex (&yylval, b4_location_if([&yylloc, ]))
-# endif
-#else /* !YYPURE */
-# define YYLEX         yylex ()
-#endif /* !YYPURE */
+b4_pure_if(
+[#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, b4_location_if([&yylloc, ])YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, b4_location_if([&yylloc, ]))
+#endif],
+[#define YYLEX yylex ()])
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -658,37 +669,33 @@
 #endif
 static void yydestructor (int symbol_type, YYSTYPE symbol_value);
 
-/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
-   variables are global, or local to YYPARSE.  */
-
-#define YY_DECL_VARIABLES                              \
-/* The lookahead symbol.  */                           \
-int yychar;                                            \
-                                                       \
-/* The semantic value of the lookahead symbol.  */     \
-YYSTYPE yylval;                                                \
-                                                       \
-/* Number of parse errors so far.  */                  \
-int yynerrs;b4_location_if([                           \
-/* Location data for the lookahead symbol.  */         \
+m4_divert_push([KILL])# ======================== M4 code.
+# b4_declare_parser_variables
+# ---------------------------
+# Declare the variables that are global, or local to YYPARSE if
+#  pure-parser
+m4_define([b4_declare_parser_variables],
+[/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of parse errors so far.  */
+int yynerrs;b4_location_if([
+/* Location data for the lookahead symbol.  */
 YYLTYPE yylloc;])
+])
+m4_divert_pop([KILL])dnl# ====================== End of M4 code.
 
-
-/* If nonreentrant, generate the variables here.  */
-
-#if !YYPURE
-YY_DECL_VARIABLES
-#endif  /* !YYPURE */
+b4_pure_if([],
+           [b4_declare_parser_variables])
 
 int
 yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {[
-  /* If reentrant, generate the variables here.  */
-#if YYPURE
-  YY_DECL_VARIABLES
-#endif  /* !YYPURE */
-
+  ]b4_pure_if([b4_declare_parser_variables])[
   register int yystate;
   register int yyn;
   int yyresult;
@@ -1284,7 +1291,7 @@
 # define YYSTYPE yystype
 #endif
 
-m4_if(b4_pure, [0],
+b4_pure_if([],
 [extern YYSTYPE b4_prefix[]lval;])
 
 b4_location_if(



reply via email to

[Prev in Thread] Current Thread [Next in Thread]