X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/b2872512f1fdfab1f8869abd3bad6373891c6cda..f6b561d9f9cbc6fc95bbb86518372a5cb52f45a6:/src/closure.h?ds=sidebyside diff --git a/src/closure.h b/src/closure.h index fdf4cc5e..0f96a8b2 100644 --- a/src/closure.h +++ b/src/closure.h @@ -1,57 +1,57 @@ /* Subroutines for bison - Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc. + + Copyright (C) 1984, 1989, 2000-2002, 2007, 2009-2012 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. + This program 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 3 of the License, 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. + This program 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. */ + along with this program. If not, see . */ #ifndef CLOSURE_H_ # define CLOSURE_H_ -/* Subroutines of file LR0.c. */ +# include "gram.h" /* Allocates the itemset and ruleset vectors, and precomputes useful data so that closure can be called. n is the number of elements to allocate for itemset. */ -void new_closure PARAMS ((int n)); +void new_closure (unsigned int n); -/* Given the kernel (aka core) of a state (a vector of item numbers - ITEMS, of length N), set up ruleset and itemset to indicate what +/* Given the kernel (aka core) of a state (a sorted vector of item numbers + ITEMS, of length N), set up RULESET and ITEMSET to indicate what rules could be run and which items could be accepted when those items are the active ones. - ruleset contains a bit for each rule. closure sets the bits for + RULESET contains a bit for each rule. CLOSURE sets the bits for all rules which could potentially describe the next input to be read. - ITEMSET is a vector of item numbers; NITEMSET is its size - 9actually, points to just beyond the end of the part of it that is - significant). closure places there the indices of all items which + ITEMSET is a sorted vector of item numbers; NITEMSET is its size + (actually, points to just beyond the end of the part of it that is + significant). CLOSURE places there the indices of all items which represent units of input that could arrive next. */ -void closure PARAMS ((short *items, int n)); +void closure (item_number *items, size_t n); -/* Frees itemset, ruleset and internal data. */ +/* Frees ITEMSET, RULESET and internal data. */ -void free_closure PARAMS ((void)); +void free_closure (void); -extern short *itemset; -extern int nitemset; +extern item_number *itemset; +extern size_t nitemset; #endif /* !CLOSURE_H_ */