]> git.saurik.com Git - bison.git/blobdiff - data/lalr1.cc
Get rid of tabulations in the Java output.
[bison.git] / data / lalr1.cc
index 7a048152ee8d383a0bc50efa143db28b08e0d594..b00212e83672039d4cc4dd44e3362ca34341dfed 100644 (file)
@@ -113,6 +113,17 @@ m4_define([b4_symbol],
 [m4_indir([b4_symbol($1, $2)])])
 
 
+# b4_symbol_if(NUM, FIELD, IF-TRUE, IF-FALSE)
+# -------------------------------------------
+# If FIELD about symbol #NUM is 1 expand IF-TRUE, if is 0, expand IF-FALSE.
+# Otherwise an error.
+m4_define([b4_symbol_if],
+[m4_case(b4_symbol([$1], [$2]),
+         [1], [$3],
+         [0], [$4],
+         [m4_fatal([$0: field $2 of $1 is not a Boolean:] b4_symbol([$1], [$2]))])])
+
+
 # b4_symbol_actions(FILENAME, LINENO,
 #                   SYMBOL-TAG, SYMBOL-NUM,
 #                   SYMBOL-ACTION, SYMBOL-TYPENAME)
@@ -132,16 +143,26 @@ m4_popdef([b4_dollar_dollar])dnl
 ])
 
 
-# b4_symbol_action_(NUM)
-# ----------------------
-# Invoke b4_dollar_dollar(SYMBOL_TYPENAME) for each symbol.
-m4_define([b4_symbol_action_],
-[m4_ifval(b4_symbol([$1], [type_name]),
+# b4_symbol_case_(SYMBOL-NUM)
+# ---------------------------
+# Issue a "case NUM" for SYMBOL-NUM.
+m4_define([b4_symbol_case_],
 [      case b4_symbol([$1], [number]): // b4_symbol([$1], [tag])
+])
+
+
+# b4_type_action_(NUMS)
+# ---------------------
+# Run actions for the symbol NUMS that all have the same type-name.
+# Skip NUMS that have no type-name.
+m4_define([b4_type_action_],
+[b4_symbol_if([$1], [has_type_name],
+[m4_map([b4_symbol_case_], [$@])[]dnl
         b4_dollar_dollar([b4_symbol([$1], [number])],
                          [b4_symbol([$1], [tag])],
                          [b4_symbol([$1], [type_name])]);
        break;
+
 ])])
 
 
@@ -154,9 +175,9 @@ m4_define([b4_symbol_variant],
             [$2.$3<$][3>(m4_shift3($@))])dnl
   switch ($1)
     {
-m4_map([b4_symbol_action_], m4_defn([b4_symbol_numbers]))
-     default:
-       break;
+m4_map([b4_type_action_], m4_defn([b4_type_names]))[]dnl
+      default:
+        break;
     }
 m4_popdef([b4_dollar_dollar])dnl
 ])
@@ -489,7 +510,7 @@ m4_ifdef([b4_stype],
 #endif
 
     /// Convert a scanner token number \a t to a symbol number.
-    token_number_type yytranslate_ (int t);
+    static inline token_number_type yytranslate_ (int t);
 
     /// A complete symbol, with its type.
     template <typename Exact>
@@ -597,17 +618,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[
   };
 
@@ -860,7 +882,7 @@ b4_percent_code_get[]dnl
       }]b4_variant_if([
 
     // Type destructor.
-    b4_symbol_variant([[yytype]], [[yysym.value]], [[template destroy]])])[
+  b4_symbol_variant([[yytype]], [[yysym.value]], [[template destroy]])])[
   }
 
 #if YYDEBUG
@@ -875,8 +897,8 @@ b4_percent_code_get[]dnl
         << yysym.location << ": ";
     switch (yytype)
       {
-]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
-[       default:
+]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))[
+       default:
          break;
       }
     yyo << ')';
@@ -1015,7 +1037,6 @@ b4_locations_if([, [[location*], [&yyla.location]]])dnl
 m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
       }
 
-
     /* Convert token to internal form.  */
     if (yychar <= yyeof_)
       {
@@ -1096,7 +1117,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
     YY_REDUCE_PRINT (yyn);
     switch (yyn)
       {
-       ]b4_user_actions[
+]b4_user_actions[
        default:
           break;
       }
@@ -1395,26 +1416,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