]> git.saurik.com Git - bison.git/blobdiff - src/symlist.h
muscle: enforce definition syntax for keyword variables
[bison.git] / src / symlist.h
index 03ffebef16572034acc847f03c7a5e78e9c98fe2..c369f69bb1067a6d6f32a594090093e9eaf1fd49 100644 (file)
@@ -1,6 +1,6 @@
 /* Lists of symbols for Bison
 
 /* Lists of symbols for Bison
 
-   Copyright (C) 2002, 2005-2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002, 2005-2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -50,6 +50,9 @@ typedef struct symbol_list
   } content;
   location location;
 
   } content;
   location location;
 
+  /* Named reference. */
+  named_ref *named_ref;
+
   /* Proper location of the symbol, not all the rule */
   location sym_loc;
 
   /* Proper location of the symbol, not all the rule */
   location sym_loc;
 
@@ -64,19 +67,26 @@ typedef struct symbol_list
   struct symbol_list *midrule_parent_rule;
   int midrule_parent_rhs_index;
 
   struct symbol_list *midrule_parent_rule;
   int midrule_parent_rhs_index;
 
+  /* ---------------------------------------------- */
+  /* Apply to the rule (attached to the LHS only).  */
+  /* ---------------------------------------------- */
+
+  /* Precedence/associativity.  */
+  symbol *ruleprec;
+
   /* The action is attached to the LHS of a rule, but action properties for
    * each RHS are also stored here.  */
   code_props action_props;
 
   /* The action is attached to the LHS of a rule, but action properties for
    * each RHS are also stored here.  */
   code_props action_props;
 
-  /* Precedence/associativity.  */
-  symbol *ruleprec;
+  /* The location of the first %empty for this rule, or \a
+     empty_location.  */
+  location percent_empty_loc;
+
   int dprec;
   int dprec;
+  location dprec_location;
   int merger;
   location merger_declaration_location;
 
   int merger;
   location merger_declaration_location;
 
-  /* Named reference. */
-  named_ref *named_ref;
-
   /* The list.  */
   struct symbol_list *next;
 } symbol_list;
   /* The list.  */
   struct symbol_list *next;
 } symbol_list;
@@ -97,6 +107,9 @@ void symbol_list_syms_print (const symbol_list *l, FILE *f);
 /** Prepend \c node to \c list.  */
 symbol_list *symbol_list_prepend (symbol_list *list, symbol_list *node);
 
 /** Prepend \c node to \c list.  */
 symbol_list *symbol_list_prepend (symbol_list *list, symbol_list *node);
 
+/** Append \c node to \c list.  */
+symbol_list *symbol_list_append (symbol_list *list, symbol_list *node);
+
 /** Free \c list, but not the items it contains.  */
 void symbol_list_free (symbol_list *list);
 
 /** Free \c list, but not the items it contains.  */
 void symbol_list_free (symbol_list *list);