mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-10 12:53:03 +00:00
1037 lines
47 KiB
Plaintext
1037 lines
47 KiB
Plaintext
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||
à partir bison.texinfo.
|
||
|
||
START-INFO-DIR-ENTRY
|
||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||
END-INFO-DIR-ENTRY
|
||
|
||
This file documents the Bison parser generator.
|
||
|
||
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
|
||
2000, 2001 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to make and distribute verbatim copies of this
|
||
manual provided the copyright notice and this permission notice are
|
||
preserved on all copies.
|
||
|
||
Permission is granted to copy and distribute modified versions of
|
||
this manual under the conditions for verbatim copying, provided also
|
||
that the sections entitled "GNU General Public License" and "Conditions
|
||
for Using Bison" are included exactly as in the original, and provided
|
||
that the entire resulting derived work is distributed under the terms
|
||
of a permission notice identical to this one.
|
||
|
||
Permission is granted to copy and distribute translations of this
|
||
manual into another language, under the above conditions for modified
|
||
versions, except that the sections entitled "GNU General Public
|
||
License", "Conditions for Using Bison" and this permission notice may be
|
||
included in translations approved by the Free Software Foundation
|
||
instead of in the original English.
|
||
|
||
|
||
File: bison.info, Node: Table of Symbols, Next: Glossary, Prev: Invocation, Up: Top
|
||
|
||
Bison Symbols
|
||
*************
|
||
|
||
`error'
|
||
A token name reserved for error recovery. This token may be used
|
||
in grammar rules so as to allow the Bison parser to recognize an
|
||
error in the grammar without halting the process. In effect, a
|
||
sentence containing an error may be recognized as valid. On a
|
||
parse error, the token `error' becomes the current look-ahead
|
||
token. Actions corresponding to `error' are then executed, and
|
||
the look-ahead token is reset to the token that originally caused
|
||
the violation. *Note Error Recovery::.
|
||
|
||
`YYABORT'
|
||
Macro to pretend that an unrecoverable syntax error has occurred,
|
||
by making `yyparse' return 1 immediately. The error reporting
|
||
function `yyerror' is not called. *Note The Parser Function
|
||
`yyparse': Parser Function.
|
||
|
||
`YYACCEPT'
|
||
Macro to pretend that a complete utterance of the language has been
|
||
read, by making `yyparse' return 0 immediately. *Note The Parser
|
||
Function `yyparse': Parser Function.
|
||
|
||
`YYBACKUP'
|
||
Macro to discard a value from the parser stack and fake a
|
||
look-ahead token. *Note Special Features for Use in Actions:
|
||
Action Features.
|
||
|
||
`YYERROR'
|
||
Macro to pretend that a syntax error has just been detected: call
|
||
`yyerror' and then perform normal error recovery if possible
|
||
(*note Error Recovery::), or (if recovery is impossible) make
|
||
`yyparse' return 1. *Note Error Recovery::.
|
||
|
||
`YYERROR_VERBOSE'
|
||
Macro that you define with `#define' in the Bison declarations
|
||
section to request verbose, specific error message strings when
|
||
`yyerror' is called.
|
||
|
||
`YYINITDEPTH'
|
||
Macro for specifying the initial size of the parser stack. *Note
|
||
Stack Overflow::.
|
||
|
||
`YYLEX_PARAM'
|
||
Macro for specifying an extra argument (or list of extra
|
||
arguments) for `yyparse' to pass to `yylex'. *Note Calling
|
||
Conventions for Pure Parsers: Pure Calling.
|
||
|
||
`YYLTYPE'
|
||
Macro for the data type of `yylloc'; a structure with four
|
||
members. *Note Data Types of Locations: Location Type.
|
||
|
||
`yyltype'
|
||
Default value for YYLTYPE.
|
||
|
||
`YYMAXDEPTH'
|
||
Macro for specifying the maximum size of the parser stack. *Note
|
||
Stack Overflow::.
|
||
|
||
`YYPARSE_PARAM'
|
||
Macro for specifying the name of a parameter that `yyparse' should
|
||
accept. *Note Calling Conventions for Pure Parsers: Pure Calling.
|
||
|
||
`YYRECOVERING'
|
||
Macro whose value indicates whether the parser is recovering from a
|
||
syntax error. *Note Special Features for Use in Actions: Action
|
||
Features.
|
||
|
||
`YYSTACK_USE_ALLOCA'
|
||
Macro used to control the use of `alloca'. If defined to `0', the
|
||
parser will not use `alloca' but `malloc' when trying to grow its
|
||
internal stacks. Do _not_ define `YYSTACK_USE_ALLOCA' to anything
|
||
else.
|
||
|
||
`YYSTYPE'
|
||
Macro for the data type of semantic values; `int' by default.
|
||
*Note Data Types of Semantic Values: Value Type.
|
||
|
||
`yychar'
|
||
External integer variable that contains the integer value of the
|
||
current look-ahead token. (In a pure parser, it is a local
|
||
variable within `yyparse'.) Error-recovery rule actions may
|
||
examine this variable. *Note Special Features for Use in Actions:
|
||
Action Features.
|
||
|
||
`yyclearin'
|
||
Macro used in error-recovery rule actions. It clears the previous
|
||
look-ahead token. *Note Error Recovery::.
|
||
|
||
`yydebug'
|
||
External integer variable set to zero by default. If `yydebug' is
|
||
given a nonzero value, the parser will output information on input
|
||
symbols and parser action. *Note Debugging Your Parser: Debugging.
|
||
|
||
`yyerrok'
|
||
Macro to cause parser to recover immediately to its normal mode
|
||
after a parse error. *Note Error Recovery::.
|
||
|
||
`yyerror'
|
||
User-supplied function to be called by `yyparse' on error. The
|
||
function receives one argument, a pointer to a character string
|
||
containing an error message. *Note The Error Reporting Function
|
||
`yyerror': Error Reporting.
|
||
|
||
`yylex'
|
||
User-supplied lexical analyzer function, called with no arguments
|
||
to get the next token. *Note The Lexical Analyzer Function
|
||
`yylex': Lexical.
|
||
|
||
`yylval'
|
||
External variable in which `yylex' should place the semantic value
|
||
associated with a token. (In a pure parser, it is a local
|
||
variable within `yyparse', and its address is passed to `yylex'.)
|
||
*Note Semantic Values of Tokens: Token Values.
|
||
|
||
`yylloc'
|
||
External variable in which `yylex' should place the line and column
|
||
numbers associated with a token. (In a pure parser, it is a local
|
||
variable within `yyparse', and its address is passed to `yylex'.)
|
||
You can ignore this variable if you don't use the `@' feature in
|
||
the grammar actions. *Note Textual Positions of Tokens: Token
|
||
Positions.
|
||
|
||
`yynerrs'
|
||
Global variable which Bison increments each time there is a parse
|
||
error. (In a pure parser, it is a local variable within
|
||
`yyparse'.) *Note The Error Reporting Function `yyerror': Error
|
||
Reporting.
|
||
|
||
`yyparse'
|
||
The parser function produced by Bison; call this function to start
|
||
parsing. *Note The Parser Function `yyparse': Parser Function.
|
||
|
||
`%debug'
|
||
Equip the parser for debugging. *Note Decl Summary::.
|
||
|
||
`%defines'
|
||
Bison declaration to create a header file meant for the scanner.
|
||
*Note Decl Summary::.
|
||
|
||
`%left'
|
||
Bison declaration to assign left associativity to token(s). *Note
|
||
Operator Precedence: Precedence Decl.
|
||
|
||
`%no_lines'
|
||
Bison declaration to avoid generating `#line' directives in the
|
||
parser file. *Note Decl Summary::.
|
||
|
||
`%nonassoc'
|
||
Bison declaration to assign non-associativity to token(s). *Note
|
||
Operator Precedence: Precedence Decl.
|
||
|
||
`%prec'
|
||
Bison declaration to assign a precedence to a specific rule.
|
||
*Note Context-Dependent Precedence: Contextual Precedence.
|
||
|
||
`%pure_parser'
|
||
Bison declaration to request a pure (reentrant) parser. *Note A
|
||
Pure (Reentrant) Parser: Pure Decl.
|
||
|
||
`%right'
|
||
Bison declaration to assign right associativity to token(s).
|
||
*Note Operator Precedence: Precedence Decl.
|
||
|
||
`%start'
|
||
Bison declaration to specify the start symbol. *Note The
|
||
Start-Symbol: Start Decl.
|
||
|
||
`%token'
|
||
Bison declaration to declare token(s) without specifying
|
||
precedence. *Note Token Type Names: Token Decl.
|
||
|
||
`%token_table'
|
||
Bison declaration to include a token name table in the parser file.
|
||
*Note Decl Summary::.
|
||
|
||
`%type'
|
||
Bison declaration to declare nonterminals. *Note Nonterminal
|
||
Symbols: Type Decl.
|
||
|
||
`%union'
|
||
Bison declaration to specify several possible data types for
|
||
semantic values. *Note The Collection of Value Types: Union Decl.
|
||
|
||
These are the punctuation and delimiters used in Bison input:
|
||
|
||
`%%'
|
||
Delimiter used to separate the grammar rule section from the Bison
|
||
declarations section or the additional C code section. *Note The
|
||
Overall Layout of a Bison Grammar: Grammar Layout.
|
||
|
||
`%{ %}'
|
||
All code listed between `%{' and `%}' is copied directly to the
|
||
output file uninterpreted. Such code forms the "C declarations"
|
||
section of the input file. *Note Outline of a Bison Grammar:
|
||
Grammar Outline.
|
||
|
||
`/*...*/'
|
||
Comment delimiters, as in C.
|
||
|
||
`:'
|
||
Separates a rule's result from its components. *Note Syntax of
|
||
Grammar Rules: Rules.
|
||
|
||
`;'
|
||
Terminates a rule. *Note Syntax of Grammar Rules: Rules.
|
||
|
||
`|'
|
||
Separates alternate rules for the same result nonterminal. *Note
|
||
Syntax of Grammar Rules: Rules.
|
||
|
||
|
||
File: bison.info, Node: Glossary, Next: Copying This Manual, Prev: Table of Symbols, Up: Top
|
||
|
||
Glossary
|
||
********
|
||
|
||
Backus-Naur Form (BNF)
|
||
Formal method of specifying context-free grammars. BNF was first
|
||
used in the `ALGOL-60' report, 1963. *Note Languages and
|
||
Context-Free Grammars: Language and Grammar.
|
||
|
||
Context-free grammars
|
||
Grammars specified as rules that can be applied regardless of
|
||
context. Thus, if there is a rule which says that an integer can
|
||
be used as an expression, integers are allowed _anywhere_ an
|
||
expression is permitted. *Note Languages and Context-Free
|
||
Grammars: Language and Grammar.
|
||
|
||
Dynamic allocation
|
||
Allocation of memory that occurs during execution, rather than at
|
||
compile time or on entry to a function.
|
||
|
||
Empty string
|
||
Analogous to the empty set in set theory, the empty string is a
|
||
character string of length zero.
|
||
|
||
Finite-state stack machine
|
||
A "machine" that has discrete states in which it is said to exist
|
||
at each instant in time. As input to the machine is processed, the
|
||
machine moves from state to state as specified by the logic of the
|
||
machine. In the case of the parser, the input is the language
|
||
being parsed, and the states correspond to various stages in the
|
||
grammar rules. *Note The Bison Parser Algorithm: Algorithm.
|
||
|
||
Grouping
|
||
A language construct that is (in general) grammatically divisible;
|
||
for example, `expression' or `declaration' in C. *Note Languages
|
||
and Context-Free Grammars: Language and Grammar.
|
||
|
||
Infix operator
|
||
An arithmetic operator that is placed between the operands on
|
||
which it performs some operation.
|
||
|
||
Input stream
|
||
A continuous flow of data between devices or programs.
|
||
|
||
Language construct
|
||
One of the typical usage schemas of the language. For example,
|
||
one of the constructs of the C language is the `if' statement.
|
||
*Note Languages and Context-Free Grammars: Language and Grammar.
|
||
|
||
Left associativity
|
||
Operators having left associativity are analyzed from left to
|
||
right: `a+b+c' first computes `a+b' and then combines with `c'.
|
||
*Note Operator Precedence: Precedence.
|
||
|
||
Left recursion
|
||
A rule whose result symbol is also its first component symbol; for
|
||
example, `expseq1 : expseq1 ',' exp;'. *Note Recursive Rules:
|
||
Recursion.
|
||
|
||
Left-to-right parsing
|
||
Parsing a sentence of a language by analyzing it token by token
|
||
from left to right. *Note The Bison Parser Algorithm: Algorithm.
|
||
|
||
Lexical analyzer (scanner)
|
||
A function that reads an input stream and returns tokens one by
|
||
one. *Note The Lexical Analyzer Function `yylex': Lexical.
|
||
|
||
Lexical tie-in
|
||
A flag, set by actions in the grammar rules, which alters the way
|
||
tokens are parsed. *Note Lexical Tie-ins::.
|
||
|
||
Literal string token
|
||
A token which consists of two or more fixed characters. *Note
|
||
Symbols::.
|
||
|
||
Look-ahead token
|
||
A token already read but not yet shifted. *Note Look-Ahead
|
||
Tokens: Look-Ahead.
|
||
|
||
LALR(1)
|
||
The class of context-free grammars that Bison (like most other
|
||
parser generators) can handle; a subset of LR(1). *Note
|
||
Mysterious Reduce/Reduce Conflicts: Mystery Conflicts.
|
||
|
||
LR(1)
|
||
The class of context-free grammars in which at most one token of
|
||
look-ahead is needed to disambiguate the parsing of any piece of
|
||
input.
|
||
|
||
Nonterminal symbol
|
||
A grammar symbol standing for a grammatical construct that can be
|
||
expressed through rules in terms of smaller constructs; in other
|
||
words, a construct that is not a token. *Note Symbols::.
|
||
|
||
Parse error
|
||
An error encountered during parsing of an input stream due to
|
||
invalid syntax. *Note Error Recovery::.
|
||
|
||
Parser
|
||
A function that recognizes valid sentences of a language by
|
||
analyzing the syntax structure of a set of tokens passed to it
|
||
from a lexical analyzer.
|
||
|
||
Postfix operator
|
||
An arithmetic operator that is placed after the operands upon
|
||
which it performs some operation.
|
||
|
||
Reduction
|
||
Replacing a string of nonterminals and/or terminals with a single
|
||
nonterminal, according to a grammar rule. *Note The Bison Parser
|
||
Algorithm: Algorithm.
|
||
|
||
Reentrant
|
||
A reentrant subprogram is a subprogram which can be in invoked any
|
||
number of times in parallel, without interference between the
|
||
various invocations. *Note A Pure (Reentrant) Parser: Pure Decl.
|
||
|
||
Reverse polish notation
|
||
A language in which all operators are postfix operators.
|
||
|
||
Right recursion
|
||
A rule whose result symbol is also its last component symbol; for
|
||
example, `expseq1: exp ',' expseq1;'. *Note Recursive Rules:
|
||
Recursion.
|
||
|
||
Semantics
|
||
In computer languages, the semantics are specified by the actions
|
||
taken for each instance of the language, i.e., the meaning of each
|
||
statement. *Note Defining Language Semantics: Semantics.
|
||
|
||
Shift
|
||
A parser is said to shift when it makes the choice of analyzing
|
||
further input from the stream rather than reducing immediately some
|
||
already-recognized rule. *Note The Bison Parser Algorithm:
|
||
Algorithm.
|
||
|
||
Single-character literal
|
||
A single character that is recognized and interpreted as is.
|
||
*Note From Formal Rules to Bison Input: Grammar in Bison.
|
||
|
||
Start symbol
|
||
The nonterminal symbol that stands for a complete valid utterance
|
||
in the language being parsed. The start symbol is usually listed
|
||
as the first nonterminal symbol in a language specification.
|
||
*Note The Start-Symbol: Start Decl.
|
||
|
||
Symbol table
|
||
A data structure where symbol names and associated data are stored
|
||
during parsing to allow for recognition and use of existing
|
||
information in repeated uses of a symbol. *Note Multi-function
|
||
Calc::.
|
||
|
||
Token
|
||
A basic, grammatically indivisible unit of a language. The symbol
|
||
that describes a token in the grammar is a terminal symbol. The
|
||
input of the Bison parser is a stream of tokens which comes from
|
||
the lexical analyzer. *Note Symbols::.
|
||
|
||
Terminal symbol
|
||
A grammar symbol that has no rules in the grammar and therefore is
|
||
grammatically indivisible. The piece of text it represents is a
|
||
token. *Note Languages and Context-Free Grammars: Language and
|
||
Grammar.
|
||
|
||
|
||
File: bison.info, Node: Copying This Manual, Next: Index, Prev: Glossary, Up: Top
|
||
|
||
Copying This Manual
|
||
*******************
|
||
|
||
* Menu:
|
||
|
||
* GNU Free Documentation License:: License for copying this manual.
|
||
|
||
|
||
File: bison.info, Node: GNU Free Documentation License, Up: Copying This Manual
|
||
|
||
GNU Free Documentation License
|
||
==============================
|
||
|
||
Version 1.1, March 2000
|
||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies
|
||
of this license document, but changing it is not allowed.
|
||
|
||
0. PREAMBLE
|
||
|
||
The purpose of this License is to make a manual, textbook, or other
|
||
written document "free" in the sense of freedom: to assure everyone
|
||
the effective freedom to copy and redistribute it, with or without
|
||
modifying it, either commercially or noncommercially. Secondarily,
|
||
this License preserves for the author and publisher a way to get
|
||
credit for their work, while not being considered responsible for
|
||
modifications made by others.
|
||
|
||
This License is a kind of "copyleft", which means that derivative
|
||
works of the document must themselves be free in the same sense.
|
||
It complements the GNU General Public License, which is a copyleft
|
||
license designed for free software.
|
||
|
||
We have designed this License in order to use it for manuals for
|
||
free software, because free software needs free documentation: a
|
||
free program should come with manuals providing the same freedoms
|
||
that the software does. But this License is not limited to
|
||
software manuals; it can be used for any textual work, regardless
|
||
of subject matter or whether it is published as a printed book.
|
||
We recommend this License principally for works whose purpose is
|
||
instruction or reference.
|
||
|
||
1. APPLICABILITY AND DEFINITIONS
|
||
|
||
This License applies to any manual or other work that contains a
|
||
notice placed by the copyright holder saying it can be distributed
|
||
under the terms of this License. The "Document", below, refers to
|
||
any such manual or work. Any member of the public is a licensee,
|
||
and is addressed as "you".
|
||
|
||
A "Modified Version" of the Document means any work containing the
|
||
Document or a portion of it, either copied verbatim, or with
|
||
modifications and/or translated into another language.
|
||
|
||
A "Secondary Section" is a named appendix or a front-matter
|
||
section of the Document that deals exclusively with the
|
||
relationship of the publishers or authors of the Document to the
|
||
Document's overall subject (or to related matters) and contains
|
||
nothing that could fall directly within that overall subject.
|
||
(For example, if the Document is in part a textbook of
|
||
mathematics, a Secondary Section may not explain any mathematics.)
|
||
The relationship could be a matter of historical connection with
|
||
the subject or with related matters, or of legal, commercial,
|
||
philosophical, ethical or political position regarding them.
|
||
|
||
The "Invariant Sections" are certain Secondary Sections whose
|
||
titles are designated, as being those of Invariant Sections, in
|
||
the notice that says that the Document is released under this
|
||
License.
|
||
|
||
The "Cover Texts" are certain short passages of text that are
|
||
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
||
that says that the Document is released under this License.
|
||
|
||
A "Transparent" copy of the Document means a machine-readable copy,
|
||
represented in a format whose specification is available to the
|
||
general public, whose contents can be viewed and edited directly
|
||
and straightforwardly with generic text editors or (for images
|
||
composed of pixels) generic paint programs or (for drawings) some
|
||
widely available drawing editor, and that is suitable for input to
|
||
text formatters or for automatic translation to a variety of
|
||
formats suitable for input to text formatters. A copy made in an
|
||
otherwise Transparent file format whose markup has been designed
|
||
to thwart or discourage subsequent modification by readers is not
|
||
Transparent. A copy that is not "Transparent" is called "Opaque".
|
||
|
||
Examples of suitable formats for Transparent copies include plain
|
||
ASCII without markup, Texinfo input format, LaTeX input format,
|
||
SGML or XML using a publicly available DTD, and
|
||
standard-conforming simple HTML designed for human modification.
|
||
Opaque formats include PostScript, PDF, proprietary formats that
|
||
can be read and edited only by proprietary word processors, SGML
|
||
or XML for which the DTD and/or processing tools are not generally
|
||
available, and the machine-generated HTML produced by some word
|
||
processors for output purposes only.
|
||
|
||
The "Title Page" means, for a printed book, the title page itself,
|
||
plus such following pages as are needed to hold, legibly, the
|
||
material this License requires to appear in the title page. For
|
||
works in formats which do not have any title page as such, "Title
|
||
Page" means the text near the most prominent appearance of the
|
||
work's title, preceding the beginning of the body of the text.
|
||
|
||
2. VERBATIM COPYING
|
||
|
||
You may copy and distribute the Document in any medium, either
|
||
commercially or noncommercially, provided that this License, the
|
||
copyright notices, and the license notice saying this License
|
||
applies to the Document are reproduced in all copies, and that you
|
||
add no other conditions whatsoever to those of this License. You
|
||
may not use technical measures to obstruct or control the reading
|
||
or further copying of the copies you make or distribute. However,
|
||
you may accept compensation in exchange for copies. If you
|
||
distribute a large enough number of copies you must also follow
|
||
the conditions in section 3.
|
||
|
||
You may also lend copies, under the same conditions stated above,
|
||
and you may publicly display copies.
|
||
|
||
3. COPYING IN QUANTITY
|
||
|
||
If you publish printed copies of the Document numbering more than
|
||
100, and the Document's license notice requires Cover Texts, you
|
||
must enclose the copies in covers that carry, clearly and legibly,
|
||
all these Cover Texts: Front-Cover Texts on the front cover, and
|
||
Back-Cover Texts on the back cover. Both covers must also clearly
|
||
and legibly identify you as the publisher of these copies. The
|
||
front cover must present the full title with all words of the
|
||
title equally prominent and visible. You may add other material
|
||
on the covers in addition. Copying with changes limited to the
|
||
covers, as long as they preserve the title of the Document and
|
||
satisfy these conditions, can be treated as verbatim copying in
|
||
other respects.
|
||
|
||
If the required texts for either cover are too voluminous to fit
|
||
legibly, you should put the first ones listed (as many as fit
|
||
reasonably) on the actual cover, and continue the rest onto
|
||
adjacent pages.
|
||
|
||
If you publish or distribute Opaque copies of the Document
|
||
numbering more than 100, you must either include a
|
||
machine-readable Transparent copy along with each Opaque copy, or
|
||
state in or with each Opaque copy a publicly-accessible
|
||
computer-network location containing a complete Transparent copy
|
||
of the Document, free of added material, which the general
|
||
network-using public has access to download anonymously at no
|
||
charge using public-standard network protocols. If you use the
|
||
latter option, you must take reasonably prudent steps, when you
|
||
begin distribution of Opaque copies in quantity, to ensure that
|
||
this Transparent copy will remain thus accessible at the stated
|
||
location until at least one year after the last time you
|
||
distribute an Opaque copy (directly or through your agents or
|
||
retailers) of that edition to the public.
|
||
|
||
It is requested, but not required, that you contact the authors of
|
||
the Document well before redistributing any large number of
|
||
copies, to give them a chance to provide you with an updated
|
||
version of the Document.
|
||
|
||
4. MODIFICATIONS
|
||
|
||
You may copy and distribute a Modified Version of the Document
|
||
under the conditions of sections 2 and 3 above, provided that you
|
||
release the Modified Version under precisely this License, with
|
||
the Modified Version filling the role of the Document, thus
|
||
licensing distribution and modification of the Modified Version to
|
||
whoever possesses a copy of it. In addition, you must do these
|
||
things in the Modified Version:
|
||
|
||
A. Use in the Title Page (and on the covers, if any) a title
|
||
distinct from that of the Document, and from those of
|
||
previous versions (which should, if there were any, be listed
|
||
in the History section of the Document). You may use the
|
||
same title as a previous version if the original publisher of
|
||
that version gives permission.
|
||
|
||
B. List on the Title Page, as authors, one or more persons or
|
||
entities responsible for authorship of the modifications in
|
||
the Modified Version, together with at least five of the
|
||
principal authors of the Document (all of its principal
|
||
authors, if it has less than five).
|
||
|
||
C. State on the Title page the name of the publisher of the
|
||
Modified Version, as the publisher.
|
||
|
||
D. Preserve all the copyright notices of the Document.
|
||
|
||
E. Add an appropriate copyright notice for your modifications
|
||
adjacent to the other copyright notices.
|
||
|
||
F. Include, immediately after the copyright notices, a license
|
||
notice giving the public permission to use the Modified
|
||
Version under the terms of this License, in the form shown in
|
||
the Addendum below.
|
||
|
||
G. Preserve in that license notice the full lists of Invariant
|
||
Sections and required Cover Texts given in the Document's
|
||
license notice.
|
||
|
||
H. Include an unaltered copy of this License.
|
||
|
||
I. Preserve the section entitled "History", and its title, and
|
||
add to it an item stating at least the title, year, new
|
||
authors, and publisher of the Modified Version as given on
|
||
the Title Page. If there is no section entitled "History" in
|
||
the Document, create one stating the title, year, authors,
|
||
and publisher of the Document as given on its Title Page,
|
||
then add an item describing the Modified Version as stated in
|
||
the previous sentence.
|
||
|
||
J. Preserve the network location, if any, given in the Document
|
||
for public access to a Transparent copy of the Document, and
|
||
likewise the network locations given in the Document for
|
||
previous versions it was based on. These may be placed in
|
||
the "History" section. You may omit a network location for a
|
||
work that was published at least four years before the
|
||
Document itself, or if the original publisher of the version
|
||
it refers to gives permission.
|
||
|
||
K. In any section entitled "Acknowledgments" or "Dedications",
|
||
preserve the section's title, and preserve in the section all
|
||
the substance and tone of each of the contributor
|
||
acknowledgments and/or dedications given therein.
|
||
|
||
L. Preserve all the Invariant Sections of the Document,
|
||
unaltered in their text and in their titles. Section numbers
|
||
or the equivalent are not considered part of the section
|
||
titles.
|
||
|
||
M. Delete any section entitled "Endorsements". Such a section
|
||
may not be included in the Modified Version.
|
||
|
||
N. Do not retitle any existing section as "Endorsements" or to
|
||
conflict in title with any Invariant Section.
|
||
|
||
If the Modified Version includes new front-matter sections or
|
||
appendices that qualify as Secondary Sections and contain no
|
||
material copied from the Document, you may at your option
|
||
designate some or all of these sections as invariant. To do this,
|
||
add their titles to the list of Invariant Sections in the Modified
|
||
Version's license notice. These titles must be distinct from any
|
||
other section titles.
|
||
|
||
You may add a section entitled "Endorsements", provided it contains
|
||
nothing but endorsements of your Modified Version by various
|
||
parties--for example, statements of peer review or that the text
|
||
has been approved by an organization as the authoritative
|
||
definition of a standard.
|
||
|
||
You may add a passage of up to five words as a Front-Cover Text,
|
||
and a passage of up to 25 words as a Back-Cover Text, to the end
|
||
of the list of Cover Texts in the Modified Version. Only one
|
||
passage of Front-Cover Text and one of Back-Cover Text may be
|
||
added by (or through arrangements made by) any one entity. If the
|
||
Document already includes a cover text for the same cover,
|
||
previously added by you or by arrangement made by the same entity
|
||
you are acting on behalf of, you may not add another; but you may
|
||
replace the old one, on explicit permission from the previous
|
||
publisher that added the old one.
|
||
|
||
The author(s) and publisher(s) of the Document do not by this
|
||
License give permission to use their names for publicity for or to
|
||
assert or imply endorsement of any Modified Version.
|
||
|
||
5. COMBINING DOCUMENTS
|
||
|
||
You may combine the Document with other documents released under
|
||
this License, under the terms defined in section 4 above for
|
||
modified versions, provided that you include in the combination
|
||
all of the Invariant Sections of all of the original documents,
|
||
unmodified, and list them all as Invariant Sections of your
|
||
combined work in its license notice.
|
||
|
||
The combined work need only contain one copy of this License, and
|
||
multiple identical Invariant Sections may be replaced with a single
|
||
copy. If there are multiple Invariant Sections with the same name
|
||
but different contents, make the title of each such section unique
|
||
by adding at the end of it, in parentheses, the name of the
|
||
original author or publisher of that section if known, or else a
|
||
unique number. Make the same adjustment to the section titles in
|
||
the list of Invariant Sections in the license notice of the
|
||
combined work.
|
||
|
||
In the combination, you must combine any sections entitled
|
||
"History" in the various original documents, forming one section
|
||
entitled "History"; likewise combine any sections entitled
|
||
"Acknowledgments", and any sections entitled "Dedications". You
|
||
must delete all sections entitled "Endorsements."
|
||
|
||
6. COLLECTIONS OF DOCUMENTS
|
||
|
||
You may make a collection consisting of the Document and other
|
||
documents released under this License, and replace the individual
|
||
copies of this License in the various documents with a single copy
|
||
that is included in the collection, provided that you follow the
|
||
rules of this License for verbatim copying of each of the
|
||
documents in all other respects.
|
||
|
||
You may extract a single document from such a collection, and
|
||
distribute it individually under this License, provided you insert
|
||
a copy of this License into the extracted document, and follow
|
||
this License in all other respects regarding verbatim copying of
|
||
that document.
|
||
|
||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||
|
||
A compilation of the Document or its derivatives with other
|
||
separate and independent documents or works, in or on a volume of
|
||
a storage or distribution medium, does not as a whole count as a
|
||
Modified Version of the Document, provided no compilation
|
||
copyright is claimed for the compilation. Such a compilation is
|
||
called an "aggregate", and this License does not apply to the
|
||
other self-contained works thus compiled with the Document, on
|
||
account of their being thus compiled, if they are not themselves
|
||
derivative works of the Document.
|
||
|
||
If the Cover Text requirement of section 3 is applicable to these
|
||
copies of the Document, then if the Document is less than one
|
||
quarter of the entire aggregate, the Document's Cover Texts may be
|
||
placed on covers that surround only the Document within the
|
||
aggregate. Otherwise they must appear on covers around the whole
|
||
aggregate.
|
||
|
||
8. TRANSLATION
|
||
|
||
Translation is considered a kind of modification, so you may
|
||
distribute translations of the Document under the terms of section
|
||
4. Replacing Invariant Sections with translations requires special
|
||
permission from their copyright holders, but you may include
|
||
translations of some or all Invariant Sections in addition to the
|
||
original versions of these Invariant Sections. You may include a
|
||
translation of this License provided that you also include the
|
||
original English version of this License. In case of a
|
||
disagreement between the translation and the original English
|
||
version of this License, the original English version will prevail.
|
||
|
||
9. TERMINATION
|
||
|
||
You may not copy, modify, sublicense, or distribute the Document
|
||
except as expressly provided for under this License. Any other
|
||
attempt to copy, modify, sublicense or distribute the Document is
|
||
void, and will automatically terminate your rights under this
|
||
License. However, parties who have received copies, or rights,
|
||
from you under this License will not have their licenses
|
||
terminated so long as such parties remain in full compliance.
|
||
|
||
10. FUTURE REVISIONS OF THIS LICENSE
|
||
|
||
The Free Software Foundation may publish new, revised versions of
|
||
the GNU Free Documentation License from time to time. Such new
|
||
versions will be similar in spirit to the present version, but may
|
||
differ in detail to address new problems or concerns. See
|
||
`http://www.gnu.org/copyleft/'.
|
||
|
||
Each version of the License is given a distinguishing version
|
||
number. If the Document specifies that a particular numbered
|
||
version of this License "or any later version" applies to it, you
|
||
have the option of following the terms and conditions either of
|
||
that specified version or of any later version that has been
|
||
published (not as a draft) by the Free Software Foundation. If
|
||
the Document does not specify a version number of this License,
|
||
you may choose any version ever published (not as a draft) by the
|
||
Free Software Foundation.
|
||
|
||
ADDENDUM: How to use this License for your documents
|
||
----------------------------------------------------
|
||
|
||
To use this License in a document you have written, include a copy of
|
||
the License in the document and put the following copyright and license
|
||
notices just after the title page:
|
||
|
||
Copyright (C) YEAR YOUR NAME.
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.1
|
||
or any later version published by the Free Software Foundation;
|
||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||
A copy of the license is included in the section entitled ``GNU
|
||
Free Documentation License''.
|
||
|
||
If you have no Invariant Sections, write "with no Invariant Sections"
|
||
instead of saying which ones are invariant. If you have no Front-Cover
|
||
Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
|
||
LIST"; likewise for Back-Cover Texts.
|
||
|
||
If your document contains nontrivial examples of program code, we
|
||
recommend releasing these examples in parallel under your choice of
|
||
free software license, such as the GNU General Public License, to
|
||
permit their use in free software.
|
||
|
||
|
||
File: bison.info, Node: Index, Prev: Copying This Manual, Up: Top
|
||
|
||
Index
|
||
*****
|
||
|
||
* Menu:
|
||
|
||
* $$: Actions.
|
||
* $N: Actions.
|
||
* %expect: Expect Decl.
|
||
* %left: Using Precedence.
|
||
* %nonassoc: Using Precedence.
|
||
* %prec: Contextual Precedence.
|
||
* %pure_parser: Pure Decl.
|
||
* %right: Using Precedence.
|
||
* %start: Start Decl.
|
||
* %token: Token Decl.
|
||
* %type: Type Decl.
|
||
* %union: Union Decl.
|
||
* @$ <1>: Action Features.
|
||
* @$: Actions and Locations.
|
||
* @N <1>: Action Features.
|
||
* @N: Actions and Locations.
|
||
* action: Actions.
|
||
* action data types: Action Types.
|
||
* action features summary: Action Features.
|
||
* actions in mid-rule: Mid-Rule Actions.
|
||
* actions, location: Actions and Locations.
|
||
* actions, semantic: Semantic Actions.
|
||
* additional C code section: C Code.
|
||
* algorithm of parser: Algorithm.
|
||
* associativity: Why Precedence.
|
||
* Backus-Naur form: Language and Grammar.
|
||
* Bison declaration summary: Decl Summary.
|
||
* Bison declarations: Declarations.
|
||
* Bison declarations (introduction): Bison Declarations.
|
||
* Bison grammar: Grammar in Bison.
|
||
* Bison invocation: Invocation.
|
||
* Bison parser: Bison Parser.
|
||
* Bison parser algorithm: Algorithm.
|
||
* Bison symbols, table of: Table of Symbols.
|
||
* Bison utility: Bison Parser.
|
||
* BISON_HAIRY: Environment Variables.
|
||
* BISON_SIMPLE: Environment Variables.
|
||
* BNF: Language and Grammar.
|
||
* C code, section for additional: C Code.
|
||
* C declarations section: C Declarations.
|
||
* C-language interface: Interface.
|
||
* calc: Infix Calc.
|
||
* calculator, infix notation: Infix Calc.
|
||
* calculator, location tracking: Location Tracking Calc.
|
||
* calculator, multi-function: Multi-function Calc.
|
||
* calculator, simple: RPN Calc.
|
||
* character token: Symbols.
|
||
* compiling the parser: Rpcalc Compile.
|
||
* conflicts: Shift/Reduce.
|
||
* conflicts, reduce/reduce: Reduce/Reduce.
|
||
* conflicts, suppressing warnings of: Expect Decl.
|
||
* context-dependent precedence: Contextual Precedence.
|
||
* context-free grammar: Language and Grammar.
|
||
* controlling function: Rpcalc Main.
|
||
* dangling else: Shift/Reduce.
|
||
* data type of locations: Location Type.
|
||
* data types in actions: Action Types.
|
||
* data types of semantic values: Value Type.
|
||
* debugging: Debugging.
|
||
* declaration summary: Decl Summary.
|
||
* declarations, Bison: Declarations.
|
||
* declarations, Bison (introduction): Bison Declarations.
|
||
* declarations, C: C Declarations.
|
||
* declaring literal string tokens: Token Decl.
|
||
* declaring operator precedence: Precedence Decl.
|
||
* declaring the start symbol: Start Decl.
|
||
* declaring token type names: Token Decl.
|
||
* declaring value types: Union Decl.
|
||
* declaring value types, nonterminals: Type Decl.
|
||
* default action: Actions.
|
||
* default data type: Value Type.
|
||
* default location type: Location Type.
|
||
* default stack limit: Stack Overflow.
|
||
* default start symbol: Start Decl.
|
||
* defining language semantics: Semantics.
|
||
* else, dangling: Shift/Reduce.
|
||
* environment variables: Environment Variables.
|
||
* error: Error Recovery.
|
||
* error recovery: Error Recovery.
|
||
* error recovery, simple: Simple Error Recovery.
|
||
* error reporting function: Error Reporting.
|
||
* error reporting routine: Rpcalc Error.
|
||
* examples, simple: Examples.
|
||
* exercises: Exercises.
|
||
* FDL, GNU Free Documentation License: GNU Free Documentation License.
|
||
* file format: Grammar Layout.
|
||
* finite-state machine: Parser States.
|
||
* formal grammar: Grammar in Bison.
|
||
* format of grammar file: Grammar Layout.
|
||
* glossary: Glossary.
|
||
* grammar file: Grammar Layout.
|
||
* grammar rule syntax: Rules.
|
||
* grammar rules section: Grammar Rules.
|
||
* grammar, Bison: Grammar in Bison.
|
||
* grammar, context-free: Language and Grammar.
|
||
* grouping, syntactic: Language and Grammar.
|
||
* infix notation calculator: Infix Calc.
|
||
* interface: Interface.
|
||
* introduction: Introduction.
|
||
* invoking Bison: Invocation.
|
||
* invoking Bison under VMS: VMS Invocation.
|
||
* LALR(1): Mystery Conflicts.
|
||
* language semantics, defining: Semantics.
|
||
* layout of Bison grammar: Grammar Layout.
|
||
* left recursion: Recursion.
|
||
* lexical analyzer: Lexical.
|
||
* lexical analyzer, purpose: Bison Parser.
|
||
* lexical analyzer, writing: Rpcalc Lexer.
|
||
* lexical tie-in: Lexical Tie-ins.
|
||
* literal string token: Symbols.
|
||
* literal token: Symbols.
|
||
* location <1>: Locations.
|
||
* location: Locations Overview.
|
||
* location actions: Actions and Locations.
|
||
* location tracking calculator: Location Tracking Calc.
|
||
* look-ahead token: Look-Ahead.
|
||
* LR(1): Mystery Conflicts.
|
||
* ltcalc: Location Tracking Calc.
|
||
* main function in simple example: Rpcalc Main.
|
||
* mfcalc: Multi-function Calc.
|
||
* mid-rule actions: Mid-Rule Actions.
|
||
* multi-function calculator: Multi-function Calc.
|
||
* multicharacter literal: Symbols.
|
||
* mutual recursion: Recursion.
|
||
* nonterminal symbol: Symbols.
|
||
* operator precedence: Precedence.
|
||
* operator precedence, declaring: Precedence Decl.
|
||
* options for invoking Bison: Invocation.
|
||
* overflow of parser stack: Stack Overflow.
|
||
* parse error: Error Reporting.
|
||
* parser: Bison Parser.
|
||
* parser stack: Algorithm.
|
||
* parser stack overflow: Stack Overflow.
|
||
* parser state: Parser States.
|
||
* polish notation calculator: RPN Calc.
|
||
* position, textual <1>: Locations.
|
||
* position, textual: Locations Overview.
|
||
* precedence declarations: Precedence Decl.
|
||
* precedence of operators: Precedence.
|
||
* precedence, context-dependent: Contextual Precedence.
|
||
* precedence, unary operator: Contextual Precedence.
|
||
* preventing warnings about conflicts: Expect Decl.
|
||
* pure parser: Pure Decl.
|
||
* recovery from errors: Error Recovery.
|
||
* recursive rule: Recursion.
|
||
* reduce/reduce conflict: Reduce/Reduce.
|
||
* reduction: Algorithm.
|
||
* reentrant parser: Pure Decl.
|
||
* reverse polish notation: RPN Calc.
|
||
* right recursion: Recursion.
|
||
* rpcalc: RPN Calc.
|
||
* rule syntax: Rules.
|
||
* rules section for grammar: Grammar Rules.
|
||
* running Bison (introduction): Rpcalc Gen.
|
||
* semantic actions: Semantic Actions.
|
||
* semantic value: Semantic Values.
|
||
* semantic value type: Value Type.
|
||
* shift/reduce conflicts: Shift/Reduce.
|
||
* shifting: Algorithm.
|
||
* simple examples: Examples.
|
||
* single-character literal: Symbols.
|
||
* stack overflow: Stack Overflow.
|
||
* stack, parser: Algorithm.
|
||
* stages in using Bison: Stages.
|
||
* start symbol: Language and Grammar.
|
||
* start symbol, declaring: Start Decl.
|
||
* state (of parser): Parser States.
|
||
* string token: Symbols.
|
||
* summary, action features: Action Features.
|
||
* summary, Bison declaration: Decl Summary.
|
||
* suppressing conflict warnings: Expect Decl.
|
||
* symbol: Symbols.
|
||
* symbol table example: Mfcalc Symtab.
|
||
* symbols (abstract): Language and Grammar.
|
||
* symbols in Bison, table of: Table of Symbols.
|
||
* syntactic grouping: Language and Grammar.
|
||
* syntax error: Error Reporting.
|
||
* syntax of grammar rules: Rules.
|
||
* terminal symbol: Symbols.
|
||
* textual position <1>: Locations.
|
||
* textual position: Locations Overview.
|
||
* token: Language and Grammar.
|
||
* token type: Symbols.
|
||
* token type names, declaring: Token Decl.
|
||
* tracing the parser: Debugging.
|
||
* unary operator precedence: Contextual Precedence.
|
||
* using Bison: Stages.
|
||
* value type, semantic: Value Type.
|
||
* value types, declaring: Union Decl.
|
||
* value types, nonterminals, declaring: Type Decl.
|
||
* value, semantic: Semantic Values.
|
||
* VMS: VMS Invocation.
|
||
* warnings, preventing: Expect Decl.
|
||
* writing a lexical analyzer: Rpcalc Lexer.
|
||
* YYABORT: Parser Function.
|
||
* YYACCEPT: Parser Function.
|
||
* YYBACKUP: Action Features.
|
||
* yychar: Look-Ahead.
|
||
* yyclearin: Error Recovery.
|
||
* yydebug: Debugging.
|
||
* YYDEBUG: Debugging.
|
||
* YYEMPTY: Action Features.
|
||
* yyerrok: Error Recovery.
|
||
* YYERROR: Action Features.
|
||
* yyerror: Error Reporting.
|
||
* YYERROR_VERBOSE: Error Reporting.
|
||
* YYINITDEPTH: Stack Overflow.
|
||
* yylex: Lexical.
|
||
* YYLEX_PARAM: Pure Calling.
|
||
* yylloc: Token Positions.
|
||
* YYLLOC_DEFAULT: Location Default Action.
|
||
* YYLTYPE: Token Positions.
|
||
* yylval: Token Values.
|
||
* YYMAXDEPTH: Stack Overflow.
|
||
* yynerrs: Error Reporting.
|
||
* yyparse: Parser Function.
|
||
* YYPARSE_PARAM: Pure Calling.
|
||
* YYPRINT: Debugging.
|
||
* YYRECOVERING: Error Recovery.
|
||
* |: Rules.
|
||
|
||
|