]> git.saurik.com Git - bison.git/blobdiff - src/closure.h
2007-11-08 Paolo Bonzini <bonzini@gnu.org>
[bison.git] / src / closure.h
index 887f3da86ec61f4e87d6d56d39ffd620a4315b34..045daa910e44cac19816adc98d36004a374507a1 100644 (file)
@@ -1,56 +1,57 @@
 /* Subroutines for bison
-   Copyright 1984, 1989, 2000, 2001  Free Software Foundation, Inc.
+
+   Copyright (C) 1984, 1989, 2000, 2001, 2002, 2007 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 <http://www.gnu.org/licenses/>.  */
 
 #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 a 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.
+/* 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; itemsetend 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.  */
+   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 itemsetsize;
+extern item_number *itemset;
+extern size_t nitemset;
 
 #endif /* !CLOSURE_H_ */