]>
git.saurik.com Git - bison.git/blob - src/tables.h
   1 /* Prepare the LALR and GLR parser tables. 
   2    Copyright (C) 2002  Free Software Foundation, Inc. 
   4    This file is part of Bison, the GNU Compiler Compiler. 
   6    Bison is free software; you can redistribute it and/or modify it 
   7    under the terms of the GNU General Public License as published by 
   8    the Free Software Foundation; either version 2, or (at your option) 
  11    Bison is distributed in the hope that it will be useful, but 
  12    WITHOUT ANY WARRANTY; without even the implied warranty of 
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
  14    General Public License for more details. 
  16    You should have received a copy of the GNU General Public License 
  17    along with Bison; see the file COPYING.  If not, write to the Free 
  18    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
  26 /* The parser tables consist of these tables. 
  28    YYTRANSLATE = vector mapping yylex's token numbers into bison's 
  31    YYTNAME = vector of string-names indexed by bison token number. 
  33    YYTOKNUM = vector of yylex token numbers corresponding to entries 
  36    YYRLINE = vector of line-numbers of all rules.  For yydebug 
  39    YYRHS = vector of items of all rules.  This is exactly what RITEMS 
  40    contains.  For yydebug and for semantic parser. 
  42    YYPRHS[R] = index in YYRHS of first item for rule R. 
  44    YYR1[R] = symbol number of symbol that rule R derives. 
  46    YYR2[R] = number of symbols composing right hand side of rule R. 
  48    YYSTOS[S] = the symbol number of the symbol that leads to state S. 
  50    YYDEFACT[S] = default rule to reduce with in state s, when YYTABLE 
  51    doesn't specify something else to do.  Zero means the default is an 
  54    YYDEFGOTO[I] = default state to go to after a reduction of a rule 
  55    that generates variable NTOKENS + I, except when YYTABLE specifies 
  58    YYPACT[S] = index in YYTABLE of the portion describing state S. 
  59    The lookahead token's type is used to index that portion to find 
  62    If the value in YYTABLE is positive, we shift the token and go to 
  65    If the value is negative, it is minus a rule number to reduce by. 
  67    If the value is zero, the default action from YYDEFACT[S] is used. 
  69    YYPGOTO[I] = the index in YYTABLE of the portion describing what to 
  70    do after reducing a rule that derives variable I + NTOKENS.  This 
  71    portion is indexed by the parser state number, S, as of before the 
  72    text for this nonterminal was read.  The value from YYTABLE is the 
  73    state to go to if the corresponding value in YYCHECK is S. 
  75    YYTABLE = a vector filled with portions for different uses, found 
  76    via YYPACT and YYPGOTO. 
  78    YYCHECK = a vector indexed in parallel with YYTABLE.  It indicates, 
  79    in a roundabout way, the bounds of the portion you are trying to 
  82    Suppose that the portion of YYTABLE starts at index P and the index 
  83    to be examined within the portion is I.  Then if YYCHECK[P+I] != I, 
  84    I is outside the bounds of what is actually allocated, and the 
  85    default (from YYDEFACT or YYDEFGOTO) should be used.  Otherwise, 
  86    YYTABLE[P+I] should be used. 
  88    YYFINAL = the state number of the termination state. 
  90    YYLAST ( = high) the number of the last element of YYTABLE, i.e., 
  91    sizeof (YYTABLE) - 1.  */ 
  97 /* A distinguished value of BASE, negative infinite.  During the 
  98    computation equals to BASE_MIN, later mapped to BASE_NINF to 
  99    keep parser tables small.  */ 
 100 extern base_t base_ninf
; 
 102 extern unsigned int *conflict_table
; 
 103 extern unsigned int *conflict_list
; 
 104 extern int conflict_list_cnt
; 
 106 extern base_t 
*table
; 
 107 extern base_t 
*check
; 
 108 /* The value used in TABLE to denote explicit parse errors 
 109    (%nonassoc), a negative infinite.  */ 
 110 extern base_t table_ninf
; 
 112 extern state_number_t 
*yydefgoto
; 
 113 extern rule_number_t 
*yydefact
; 
 116 void tables_generate (void); 
 117 void tables_free (void); 
 119 #endif /* !TABLES_H_ */