]>
git.saurik.com Git - bison.git/blob - src/lalr.h
   1 /* Compute lookahead criteria for bison, 
   3    Copyright (C) 1984, 1986, 1989, 2000, 2002, 2004, 2006-2007, 
   4    2009-2012 Free Software Foundation, Inc. 
   6    This file is part of Bison, the GNU Compiler Compiler. 
   8    This program is free software: you can redistribute it and/or modify 
   9    it under the terms of the GNU General Public License as published by 
  10    the Free Software Foundation, either version 3 of the License, or 
  11    (at your option) any later version. 
  13    This program is distributed in the hope that it will be useful, 
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  16    GNU General Public License for more details. 
  18    You should have received a copy of the GNU General Public License 
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ 
  27 /* Import the definition of RULE_T. */ 
  30 /* Import the definition of CORE, TRANSITIONS and REDUCTIONS. */ 
  34 /** Build the LALR(1) automaton. 
  36    Find which rules need lookahead in each state, and which lookahead 
  48  * Set #nLA and allocate all reduction lookahead sets.  Normally invoked by 
  51 void initialize_LA (void); 
  58  * Normally invoked by #lalr. 
  60 void set_goto_map (void); 
  63  * Update state numbers recorded in #goto_map, #from_state, and #to_state such 
  65  *   - \c nstates_old is the old number of states. 
  66  *   - Where \c i is the old state number, <tt>old_to_new[i]</tt> is either: 
  67  *     - \c nstates_old if state \c i is removed because it is unreachable. 
  68  *       Thus, remove all goto entries involving this state. 
  69  *     - The new state number. 
  71 void lalr_update_state_numbers (state_number old_to_new
[], 
  72                                 state_number nstates_old
); 
  75 /** Release the information related to lookahead tokens. 
  77    Can be performed once the action tables are computed.  */ 
  78 void lalr_free (void); 
  80 typedef size_t goto_number
; 
  81 # define GOTO_NUMBER_MAXIMUM ((goto_number) -1) 
  83 /** Index into #from_state and #to_state. 
  85    All the transitions that accept a particular variable are grouped 
  86    together and GOTO_MAP[I - NTOKENS] is the index in FROM_STATE and 
  87    TO_STATE of the first of them.  */ 
  88 extern goto_number 
*goto_map
; 
  90 /** The size of #from_state and #to_state.  */ 
  91 extern goto_number ngotos
; 
  93 /** State number which a transition leads from.  */ 
  94 extern state_number 
*from_state
; 
  96 /** State number it leads to.  */ 
  97 extern state_number 
*to_state
; 
  99 /** Map a state/symbol pair into its numeric representation.  */ 
 100 goto_number 
map_goto (state_number s0
, symbol_number sym
); 
 102 /* goto_follows[i] is the set of tokens following goto i.  */ 
 103 extern bitsetv goto_follows
; 
 106 #endif /* !LALR_H_ */