]> git.saurik.com Git - bison.git/blobdiff - src/lalr.h
* src/lalr.h, src/lalr.c (goto_number_t): New.
[bison.git] / src / lalr.h
index 4f11cc51b0baf188bdf4100bb67e3328d5f973c3..696bc98d15746a3e99d04ebc90dc272d851de2e0 100644 (file)
@@ -1,5 +1,5 @@
 /* Compute look-ahead criteria for bison,
 /* Compute look-ahead criteria for bison,
-   Copyright (C) 1984, 1986, 1989 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1986, 1989, 2000, 2002 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #ifndef LALR_H_
 # define LALR_H_
 
 #ifndef LALR_H_
 # define LALR_H_
 
+#include "bitset.h"
+#include "bitsetv.h"
+
+/* Import the definition of CORE, TRANSITIONS and REDUCTIONS. */
+# include "state.h"
+
+/* Import the definition of RULE_T. */
+# include "gram.h"
+
 /* Compute how to make the finite state machine deterministic; find
    which rules need lookahead in each state, and which lookahead
    tokens they accept.  */
 /* Compute how to make the finite state machine deterministic; find
    which rules need lookahead in each state, and which lookahead
    tokens they accept.  */
@@ -30,51 +39,39 @@ void lalr PARAMS ((void));
 
 /* lalr() builds these data structures. */
 
 
 /* lalr() builds these data structures. */
 
-/* goto_map, from_state and to_state --record each shift transition
+/* GOTO_MAP, FROM_STATE and TO_STATE -- record each shift transition
    which accepts a variable (a nonterminal).
 
    which accepts a variable (a nonterminal).
 
-   from_state[t] is the state number which a transition leads from and
-   to_state[t] is the state number it leads to.  All the transitions
-   that accept a particular variable are grouped together and
-   goto_map[i - ntokens] is the index in from_state and to_state of
-   the first of them.  */
-
-extern short *goto_map;
-extern short *from_state;
-extern short *to_state;
+   FROM_STATE[T] -- state number which a transition leads from.
+   TO_STATE[T] -- state number it leads to.
 
 
-/* CONSISTENT[S] is nonzero if no lookahead is needed to decide what
-   to do in state S.  */
+   All the transitions that accept a particular variable are grouped
+   together and GOTO_MAP[I - NTOKENS] is the index in FROM_STATE and
+   TO_STATE of the first of them.  */
 
 
-extern char *consistent;
+typedef short goto_number_t;
+# define GOTO_NUMBER_MAX ((goto_number_t) INT_MAX)
 
 
+extern goto_number_t *goto_map;
+extern state_number_t *from_state;
+extern state_number_t *to_state;
 
 
-/* LARULENO is a vector which records the rules that need lookahead in
-   various states.  The elements of LARULENO that apply to state S are
-   those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1.  Each element
-   of LARULENO is a rule number.
+/* LARULE is a vector which records the rules that need lookahead in
+   various states.  The elements of LARULE that apply to state S are
+   those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1.
 
 
-   If LR is the length of LAruleno, then a number from 0 to LR-1 can
+   If LR is the length of LArule, then a number from 0 to LR-1 can
    specify both a rule and a state where the rule might be applied.
    */
 
    specify both a rule and a state where the rule might be applied.
    */
 
-extern short *LAruleno;
+extern rule_t **LArule;
 
 
-/* LA is a lr by ntokens matrix of bits.  LA[l, i] is 1 if the rule
+/* LA is a LR by NTOKENS matrix of bits.  LA[l, i] is 1 if the rule
    LAruleno[l] is applicable in the appropriate state when the next
    token is symbol i.  If LA[l, i] and LA[l, j] are both 1 for i != j,
    it is a conflict.  */
 
    LAruleno[l] is applicable in the appropriate state when the next
    token is symbol i.  If LA[l, i] and LA[l, j] are both 1 for i != j,
    it is a conflict.  */
 
-extern unsigned *LA;
-
-
-extern int tokensetsize;
-extern short *lookaheads;
-extern short *accessing_symbol;
-extern core **state_table;
-extern shifts **shift_table;
-extern reductions **reduction_table;
-
+extern bitsetv LA;
 
 
 #endif /* !LALR_H_ */
 
 
 #endif /* !LALR_H_ */