bison-patches
[Top][All Lists]
Advanced

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

[PATCH] Simplify code for variants bench marks.


From: Akim Demaille
Subject: [PATCH] Simplify code for variants bench marks.
Date: Sat, 15 Nov 2008 13:20:37 -0000

        * etc/bench.pl.in (&generate_grammar_list): Define and use
        location_type.
        Factor the common code in yylex.
---
 ChangeLog       |    7 +++++++
 etc/bench.pl.in |   31 ++++++++++++++-----------------
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6364361..3b8e4c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-15  Akim Demaille  <address@hidden>
+
+       Simplify code for variants bench marks.
+       * etc/bench.pl.in (&generate_grammar_list): Define and use
+       location_type.
+       Factor the common code in yylex.
+
 2008-11-15  Akim Demaille  <address@hidden>
 
        Better error message.
diff --git a/etc/bench.pl.in b/etc/bench.pl.in
index 7cab2eb..a95e646 100755
--- a/etc/bench.pl.in
+++ b/etc/bench.pl.in
@@ -686,6 +686,7 @@ yy::parser::token_type yylex(yy::parser::semantic_type* 
yylval,
                              yy::parser::location_type* yylloc)
 #endif
 {
+  typedef yy::parser::location_type location_type;
   typedef yy::parser::token token;
   static int stage = -1;
   ++stage;
@@ -694,7 +695,7 @@ yy::parser::token_type yylex(yy::parser::semantic_type* 
yylval,
 #if USE_LEX_SYMBOL
       return yy::parser::make_END_OF_FILE (yy::location());
 #else
-      *yylloc = yy::location ();
+      *yylloc = location_type ();
       return token::END_OF_FILE;
 #endif
     }
@@ -702,17 +703,15 @@ yy::parser::token_type yylex(yy::parser::semantic_type* 
yylval,
     {
 #if USE_LEX_SYMBOL
       return yy::parser::make_NUMBER (stage, yy::location());
-#elif defined ONE_STAGE_BUILD
+#else
+# if defined ONE_STAGE_BUILD
       yylval->build(stage);
-      *yylloc = yy::location ();
-      return token::NUMBER;
-#elif USE_VARIANTS
+# elif USE_VARIANTS
       yylval->build<int>() = stage;
-      *yylloc = yy::location ();
-      return token::NUMBER;
-#else
+# else
       yylval->ival = stage;
-      *yylloc = yy::location ();
+# endif
+      *yylloc = location_type ();
       return token::NUMBER;
 #endif
     }
@@ -720,17 +719,15 @@ yy::parser::token_type yylex(yy::parser::semantic_type* 
yylval,
     {
 #if USE_LEX_SYMBOL
       return yy::parser::make_TEXT ("A string.", yy::location());
-#elif defined ONE_STAGE_BUILD
+#else
+# if defined ONE_STAGE_BUILD
       yylval->build(std::string("A string."));
-      *yylloc = yy::location ();
-      return token::TEXT;
-#elif USE_VARIANTS
+# elif USE_VARIANTS
       yylval->build<std::string>() = std::string("A string.");
-      *yylloc = yy::location ();
-      return token::TEXT;
-#else
+# else
       yylval->sval = new std::string("A string.");
-      *yylloc = yy::location ();
+# endif
+      *yylloc = location_type ();
       return token::TEXT;
 #endif
     }
-- 
1.6.0.2.588.g3102





reply via email to

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