1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Subroutines for bison 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Copyright (C) 1984, 1989, 2000, 2001, 2002 Free Software 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Foundation, Inc. 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This file is part of Bison, the GNU Compiler Compiler. 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is free software; you can redistribute it and/or modify it 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project under the terms of the GNU General Public License as published by 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the Free Software Foundation; either version 2, or (at your option) 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project any later version. 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is distributed in the hope that it will be useful, but 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project WITHOUT ANY WARRANTY; without even the implied warranty of 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project General Public License for more details. 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project You should have received a copy of the GNU General Public License 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project along with Bison; see the file COPYING. If not, write to the Free 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 02110-1301, USA. */ 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef CLOSURE_H_ 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define CLOSURE_H_ 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include "gram.h" 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Allocates the itemset and ruleset vectors, and precomputes useful 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project data so that closure can be called. n is the number of elements to 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project allocate for itemset. */ 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid new_closure (unsigned int n); 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Given the kernel (aka core) of a state (a vector of item numbers 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ITEMS, of length N), set up RULESET and ITEMSET to indicate what 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project rules could be run and which items could be accepted when those 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project items are the active ones. 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project RULESET contains a bit for each rule. CLOSURE sets the bits for 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project all rules which could potentially describe the next input to be 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project read. 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ITEMSET is a vector of item numbers; NITEMSET is its size 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (actually, points to just beyond the end of the part of it that is 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project significant). CLOSURE places there the indices of all items which 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project represent units of input that could arrive next. */ 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid closure (item_number *items, size_t n); 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Frees ITEMSET, RULESET and internal data. */ 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid free_closure (void); 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern item_number *itemset; 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern size_t nritemset; 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* !CLOSURE_H_ */ 60