bison-patches
[Top][All Lists]
Advanced

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

[PATCH] Use "enum" for integral constants.


From: Akim Demaille
Subject: [PATCH] Use "enum" for integral constants.
Date: Mon, 10 Nov 2008 10:44:16 -0000

This is just nicer to read, I observed no speedup.

        * data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
        (yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
        (yyuser_token_number_max_, yyundef_token_): Move into...
        (yytranslate_): here.
---
 ChangeLog     |   10 ++++++++++
 data/lalr1.cc |   44 ++++++++++++++++++--------------------------
 data/yacc.c   |    2 +-
 3 files changed, 29 insertions(+), 27 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 84f378a..0f64fe1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2008-11-10  Akim Demaille  <address@hidden>
 
+       Use "enum" for integral constants.
+       This is just nicer to read, I observed no speedup.
+       
+       * data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
+       (yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
+       (yyuser_token_number_max_, yyundef_token_): Move into...
+       (yytranslate_): here.
+
+2008-11-10  Akim Demaille  <address@hidden>
+
        Shortcuts in bench directives.
        * etc/bench.pl.in (parse_dirs): New.
        Use it.
diff --git a/data/lalr1.cc b/data/lalr1.cc
index e9a1b02..578e24f 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -605,17 +605,18 @@ m4_ifdef([b4_stype],
     inline void yypop_ (unsigned int n = 1);
 
     /* Constants.  */
-    static const int yyeof_;
-    /* LAST_ -- Last index in TABLE_.  */
-    static const int yylast_;
-    static const int yynnts_;
-    static const int yyempty_;
-    static const int yyfinal_;
-    static const int yyterror_;
-    static const int yyerrcode_;
-    static const int yyntokens_;
-    static const unsigned int yyuser_token_number_max_;
-    static const token_number_type yyundef_token_;
+    enum
+    {
+      yyeof_ = 0,
+      yylast_ = ]b4_last[,           //< Last index in yytable_.
+      yynnts_ = ]b4_nterms_number[,  //< Number of nonterminal symbols.
+      yyempty_ = -2,
+      yyfinal_ = ]b4_final_state_number[, //< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = ]b4_tokens_number[,   //< Number of tokens.
+    };
+
 ]b4_parse_param_vars[
   };
 
@@ -1403,26 +1404,17 @@ b4_error_verbose_if([ tok])[)
     const token_number_type
     translate_table[] =
     {
-  ]b4_translate[
+]b4_translate[
     };
-    if ((unsigned int) t <= yyuser_token_number_max_)
+    const unsigned int user_token_number_max_ = ]b4_user_token_number_max[;
+    const token_number_type undef_token_ = ]b4_undef_token_number[;
+
+    if (static_cast<unsigned int> (t) <= user_token_number_max_)
       return translate_table[t];
     else
-      return yyundef_token_;
+      return undef_token_;
   }
 
-  const int ]b4_parser_class_name[::yyeof_ = 0;
-  const int ]b4_parser_class_name[::yylast_ = ]b4_last[;
-  const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[;
-  const int ]b4_parser_class_name[::yyempty_ = -2;
-  const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[;
-  const int ]b4_parser_class_name[::yyterror_ = 1;
-  const int ]b4_parser_class_name[::yyerrcode_ = 256;
-  const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[;
-
-  const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = 
]b4_user_token_number_max[;
-  const ]b4_parser_class_name[::token_number_type 
]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[;
-
 ]b4_namespace_close[
 
 ]b4_epilogue[]dnl
diff --git a/data/yacc.c b/data/yacc.c
index 12ce138..d16e385 100644
--- a/data/yacc.c
+++ b/data/yacc.c
@@ -482,7 +482,7 @@ union yyalloc
 #define YYNNTS  ]b4_nterms_number[
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  ]b4_rules_number[
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  ]b4_states_number[
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-- 
1.6.0.2.588.g3102





reply via email to

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