/* Allocate input grammar variables for bison, Copyright 1984, 1986, 1989, 2001 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. Bison is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. Bison is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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. */ #include "system.h" #include "gram.h" #include "symtab.h" #include "reader.h" /* comments for these variables are in gram.h */ int nitems; int nrules; int nsyms; int ntokens; int nvars; short *ritem = NULL; int nritems; rule_t *rules = NULL; struct bucket **symbols = NULL; short *token_translations = NULL; int start_symbol; int max_user_token_number; int semantic_parser; int pure_parser; int error_token_number; /*------------------------. | Dump RITEM for traces. | `------------------------*/ void ritem_print (FILE *out) { int i; fputs ("RITEM\n", out); for (i = 0; i < nritems; ++i) if (ritem[i] >= 0) fprintf (out, " %s", symbols[ritem[i]]->tag); else fprintf (out, " (rule %d)\n", -ritem[i] - 1); fputs ("\n\n", out); } /*------------------------------------------. | Return the size of the longest rule RHS. | `------------------------------------------*/ size_t ritem_longest_rhs (void) { int length; int max; int i; length = 0; max = 0; for (i = 0; i < nritems; ++i) if (ritem[i] >= 0) { length++; } else { if (length > max) max = length; length = 0; } return max; }