Home | History | Annotate | Download | only in src
      1 /* IELR main implementation.
      2 
      3    Copyright (C) 2009-2012 Free Software Foundation, Inc.
      4 
      5    This file is part of Bison, the GNU Compiler Compiler.
      6 
      7    This program is free software: you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation, either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef IELR_H_
     21 # define IELR_H_
     22 
     23 #include <bitset.h>
     24 
     25 #include "state.h"
     26 
     27 /**
     28  * \pre
     29  *   - \c ::states is of size \c ::nstates and defines an LR(0) parser
     30  *     for the users's grammar.
     31  *   - \c ::ntokens is the number of tokens in the grammar.
     32  * \post
     33  *   - \c ::states is of size \c ::nstates (which might be greater than
     34  *     <tt>::nstates \@pre</tt>) and defines the type of parser specified by
     35  *     the value of the \c \%define variable \c lr.type.  Its value can be:
     36  *     - \c "lalr".
     37  *     - \c "ielr".
     38  *     - \c "canonical-lr".
     39  */
     40 void ielr (void);
     41 
     42 bool ielr_item_has_lookahead (state *s, symbol_number lhs, size_t item,
     43                               symbol_number lookahead, state ***predecessors,
     44                               bitset **item_lookahead_sets);
     45 
     46 #endif /* !IELR_H_ */
     47