]> git.saurik.com Git - bison.git/blobdiff - src/gram.h
Fix push parsing memory leak reported by Brandon Lucia at
[bison.git] / src / gram.h
index cbdfa5e03fb3bdca6f41fc4ca5838f34fc1f869c..3b742d565e8be947365dccc14b6561b140bd5c3b 100644 (file)
@@ -1,6 +1,6 @@
 /* Data definitions for internal representation of Bison's input.
 
 /* Data definitions for internal representation of Bison's input.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2001, 2002, 2003
+   Copyright (C) 1984, 1986, 1989, 1992, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -17,8 +17,8 @@
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to
-   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #ifndef GRAM_H_
 # define GRAM_H_
 
 #ifndef GRAM_H_
 # define GRAM_H_
@@ -115,6 +115,7 @@ extern int ntokens;
 extern int nvars;
 
 typedef int item_number;
 extern int nvars;
 
 typedef int item_number;
+#define ITEM_NUMBER_MAX INT_MAX
 extern item_number *ritem;
 extern unsigned int nritems;
 
 extern item_number *ritem;
 extern unsigned int nritems;
 
@@ -138,8 +139,15 @@ item_number_as_symbol_number (item_number i)
   return i;
 }
 
   return i;
 }
 
+static inline bool
+item_number_is_symbol_number (item_number i)
+{
+  return i >= 0;
+}
+
 /* Rule numbers.  */
 /* Rule numbers.  */
-typedef short rule_number;
+typedef int rule_number;
+#define RULE_NUMBER_MAX INT_MAX
 extern rule_number nrules;
 
 static inline item_number
 extern rule_number nrules;
 
 static inline item_number
@@ -154,6 +162,11 @@ item_number_as_rule_number (item_number i)
   return -1 - i;
 }
 
   return -1 - i;
 }
 
+static inline bool
+item_number_is_rule_number (item_number i)
+{
+  return i < 0;
+}
 
 /*--------.
 | Rules.  |
 
 /*--------.
 | Rules.  |
@@ -175,8 +188,8 @@ typedef struct
   /* This symbol provides both the associativity, and the precedence. */
   symbol *prec;
 
   /* This symbol provides both the associativity, and the precedence. */
   symbol *prec;
 
-  short dprec;
-  short merger;
+  int dprec;
+  int merger;
 
   /* This symbol was attached to the rule via %prec. */
   symbol *precsym;
 
   /* This symbol was attached to the rule via %prec. */
   symbol *precsym;