Annotation of GNUtools/bison/gram.h, revision 1.1

1.1     ! root        1: /* Data definitions for internal representation of bison's input,
        !             2:    Copyright (C) 1984, 1986, 1989 Free Software Foundation, Inc.
        !             3: 
        !             4: This file is part of Bison, the GNU Compiler Compiler.
        !             5: 
        !             6: Bison is free software; you can redistribute it and/or modify
        !             7: it under the terms of the GNU General Public License as published by
        !             8: the Free Software Foundation; either version 2, or (at your option)
        !             9: any later version.
        !            10: 
        !            11: Bison is distributed in the hope that it will be useful,
        !            12: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            14: GNU General Public License for more details.
        !            15: 
        !            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
        !            18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !            19: 
        !            20: 
        !            21: /* representation of the grammar rules:
        !            22: 
        !            23: ntokens is the number of tokens, and nvars is the number of variables
        !            24: (nonterminals).  nsyms is the total number, ntokens + nvars.
        !            25: 
        !            26: Each symbol (either token or variable) receives a symbol number.
        !            27: Numbers 0 to ntokens-1 are for tokens, and ntokens to nsyms-1 are for
        !            28: variables.  Symbol number zero is the end-of-input token.  This token
        !            29: is counted in ntokens.
        !            30: 
        !            31: The rules receive rule numbers 1 to nrules in the order they are written.
        !            32: Actions and guards are accessed via the rule number.
        !            33: 
        !            34: The rules themselves are described by three arrays: rrhs, rlhs and
        !            35: ritem.  rlhs[R] is the symbol number of the left hand side of rule R.
        !            36: The right hand side is stored as symbol numbers in a portion of
        !            37: ritem.  rrhs[R] contains the index in ritem of the beginning of the
        !            38: portion for rule R.
        !            39: 
        !            40: If rlhs[R] is -1, the rule has been thrown out by reduce.c
        !            41: and should be ignored.
        !            42: 
        !            43: The length of the portion is one greater
        !            44:  than the number of symbols in the rule's right hand side.
        !            45: The last element in the portion contains minus R, which
        !            46: identifies it as the end of a portion and says which rule it is for.
        !            47: 
        !            48: The portions of ritem come in order of increasing rule number and are
        !            49: followed by an element which is zero to mark the end.  nitems is the
        !            50: total length of ritem, not counting the final zero.  Each element of
        !            51: ritem is called an "item" and its index in ritem is an item number.
        !            52: 
        !            53: Item numbers are used in the finite state machine to represent
        !            54: places that parsing can get to.
        !            55: 
        !            56: Precedence levels are recorded in the vectors sprec and rprec.
        !            57: sprec records the precedence level of each symbol,
        !            58: rprec the precedence level of each rule.
        !            59: rprecsym is the symbol-number of the symbol in %prec for this rule (if any).
        !            60: 
        !            61: Precedence levels are assigned in increasing order starting with 1 so
        !            62: that numerically higher precedence values mean tighter binding as they
        !            63: ought to.  Zero as a symbol or rule's precedence means none is
        !            64: assigned.
        !            65: 
        !            66: Associativities are recorded similarly in rassoc and sassoc.  */
        !            67: 
        !            68: 
        !            69: #define        ISTOKEN(s)      ((s) < ntokens)
        !            70: #define        ISVAR(s)        ((s) >= ntokens)
        !            71: 
        !            72: 
        !            73: extern int nitems;
        !            74: extern int nrules;
        !            75: extern int nsyms;
        !            76: extern int ntokens;
        !            77: extern int nvars;
        !            78: 
        !            79: extern short *ritem;
        !            80: extern short *rlhs;
        !            81: extern short *rrhs;
        !            82: extern short *rprec;
        !            83: extern short *rprecsym;
        !            84: extern short *sprec;
        !            85: extern short *rassoc;
        !            86: extern short *sassoc;
        !            87: extern short *rline;           /* Source line number of each rule */
        !            88: 
        !            89: extern int start_symbol;
        !            90: 
        !            91: 
        !            92: /* associativity values in elements of rassoc, sassoc.  */
        !            93: 
        !            94: #define RIGHT_ASSOC 1
        !            95: #define LEFT_ASSOC 2
        !            96: #define NON_ASSOC 3
        !            97: 
        !            98: /* token translation table:
        !            99: indexed by a token number as returned by the user's yylex routine,
        !           100: it yields the internal token number used by the parser and throughout bison.
        !           101: If translations is zero, the translation table is not used because
        !           102: the two kinds of token numbers are the same.  */
        !           103: 
        !           104: extern short *token_translations;
        !           105: extern int translations;
        !           106: extern int max_user_token_number;
        !           107: 
        !           108: /* semantic_parser is nonzero if the input file says to use the hairy parser
        !           109: that provides for semantic error recovery.  If it is zero, the yacc-compatible
        !           110: simplified parser is used.  */
        !           111: 
        !           112: extern int semantic_parser;
        !           113: 
        !           114: /* pure_parser is nonzero if should generate a parser that is all pure and reentrant. */
        !           115: 
        !           116: extern int pure_parser;
        !           117: 
        !           118: /* error_token_number is the token number of the error token.  */
        !           119: 
        !           120: extern int error_token_number;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.