]> git.saurik.com Git - bison.git/commitdiff
c: improve the definition of public types
authorAkim Demaille <akim@lrde.epita.fr>
Sun, 23 Dec 2012 16:54:59 +0000 (17:54 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Wed, 26 Dec 2012 09:38:58 +0000 (10:38 +0100)
* data/c.m4 (b4_token_enum): Improve comments.
(b4_value_type_define, b4_location_type_define): New, extracted
from...
(b4_declare_yylstype): here.
Separate the typedefs from the union/struct definitions.

data/c.m4
doc/bison.texi

index b6f77d8fa046d69946f8304dd54e6b1c9a1ab356..89ad4fd14acf517bb40ae9bff3e3840ac277b3b4 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -270,11 +270,9 @@ m4_define([b4_token_enum],
 # --------------
 # Output the definition of the tokens (if there are) as enums.
 m4_define([b4_token_enums],
 # --------------
 # Output the definition of the tokens (if there are) as enums.
 m4_define([b4_token_enums],
-[b4_any_token_visible_if([[/* Tokens.  */
+[b4_any_token_visible_if([[/* Token type.  */
 #ifndef ]b4_api_PREFIX[TOKENTYPE
 # define ]b4_api_PREFIX[TOKENTYPE
 #ifndef ]b4_api_PREFIX[TOKENTYPE
 # define ]b4_api_PREFIX[TOKENTYPE
-  /* Put the tokens into the symbol table, so that GDB and other debuggers
-     know about them.  */
   enum ]b4_api_prefix[tokentype
   {
     ]m4_join([,
   enum ]b4_api_prefix[tokentype
   {
     ]m4_join([,
@@ -503,44 +501,62 @@ b4_locations_if([, yylocationp])[]b4_user_args[);
 ## Declarations.  ##
 ## -------------- ##
 
 ## Declarations.  ##
 ## -------------- ##
 
-# b4_declare_yylstype
-# -------------------
-# Declarations that might either go into the header (if --defines) or
-# in the parser body.  Declare YYSTYPE/YYLTYPE, and yylval/yylloc.
-m4_define([b4_declare_yylstype],
-[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
+# b4_value_type_define
+# --------------------
+m4_define([b4_value_type_define],
+[[/* Value type.  */
+#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED
 ]m4_ifdef([b4_stype],
 ]m4_ifdef([b4_stype],
-[[typedef union ]b4_union_name[
+[[typedef union ]b4_union_name[ ]b4_api_PREFIX[STYPE;
+union ]b4_union_name[
 {
 ]b4_user_stype[
 {
 ]b4_user_stype[
-} ]b4_api_PREFIX[STYPE;
+};
 # define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]],
 [m4_if(b4_tag_seen_flag, 0,
 [[typedef int ]b4_api_PREFIX[STYPE;
 # define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]])])[
 # define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
 # define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]],
 [m4_if(b4_tag_seen_flag, 0,
 [[typedef int ]b4_api_PREFIX[STYPE;
 # define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]])])[
 # define ]b4_api_PREFIX[STYPE_IS_DECLARED 1
-#endif]b4_locations_if([[
+#endif
+]])
 
 
+
+# b4_location_type_define
+# -----------------------
+m4_define([b4_location_type_define],
+[[/* Location type.  */
 #if ! defined ]b4_api_PREFIX[LTYPE && ! defined ]b4_api_PREFIX[LTYPE_IS_DECLARED
 #if ! defined ]b4_api_PREFIX[LTYPE && ! defined ]b4_api_PREFIX[LTYPE_IS_DECLARED
-typedef struct ]b4_api_PREFIX[LTYPE
+typedef struct ]b4_api_PREFIX[LTYPE ]b4_api_PREFIX[LTYPE;
+struct ]b4_api_PREFIX[LTYPE
 {
   int first_line;
   int first_column;
   int last_line;
   int last_column;
 {
   int first_line;
   int first_column;
   int last_line;
   int last_column;
-} ]b4_api_PREFIX[LTYPE;
+};
 # define ]b4_api_PREFIX[LTYPE_IS_DECLARED 1
 # define ]b4_api_PREFIX[LTYPE_IS_TRIVIAL 1
 # define ]b4_api_PREFIX[LTYPE_IS_DECLARED 1
 # define ]b4_api_PREFIX[LTYPE_IS_TRIVIAL 1
-#endif]])
+#endif
+]])
+
+
+# b4_declare_yylstype
+# -------------------
+# Declarations that might either go into the header (if --defines) or
+# in the parser body.  Declare YYSTYPE/YYLTYPE, and yylval/yylloc.
+m4_define([b4_declare_yylstype],
+[b4_value_type_define[]b4_locations_if([
+b4_location_type_define])
 
 b4_pure_if([], [[extern ]b4_api_PREFIX[STYPE ]b4_prefix[lval;
 ]b4_locations_if([[extern ]b4_api_PREFIX[LTYPE ]b4_prefix[lloc;]])])[]dnl
 ])
 
 
 b4_pure_if([], [[extern ]b4_api_PREFIX[STYPE ]b4_prefix[lval;
 ]b4_locations_if([[extern ]b4_api_PREFIX[LTYPE ]b4_prefix[lloc;]])])[]dnl
 ])
 
+
 # b4_YYDEBUG_define
 # ------------------
 m4_define([b4_YYDEBUG_define],
 # b4_YYDEBUG_define
 # ------------------
 m4_define([b4_YYDEBUG_define],
-[[/* Enabling traces.  */
+[[/* Debug traces.  */
 ]m4_if(b4_api_prefix, [yy],
 [[#ifndef YYDEBUG
 # define YYDEBUG ]b4_parse_trace_if([1], [0])[
 ]m4_if(b4_api_prefix, [yy],
 [[#ifndef YYDEBUG
 # define YYDEBUG ]b4_parse_trace_if([1], [0])[
index f028ebf16f917ffc92ed4a0b669538780375193d..f738f5125ba44b34ae03ac4dd4ad991192dae259 100644 (file)
@@ -6092,7 +6092,7 @@ parsers.  To comply with this tradition, when @code{api.prefix} is used,
 @code{YYDEBUG} (not renamed) is used as a default value:
 
 @example
 @code{YYDEBUG} (not renamed) is used as a default value:
 
 @example
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef CDEBUG
 # if defined YYDEBUG
 #  if YYDEBUG
 #ifndef CDEBUG
 # if defined YYDEBUG
 #  if YYDEBUG