[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
doc: simplify uses of @ref
From: |
Akim Demaille |
Subject: |
doc: simplify uses of @ref |
Date: |
Mon, 27 Jan 2020 07:13:04 +0100 |
commit a759e678ff06c3bdb6045794465c8dbcf3f6dfd2
Author: Akim Demaille <address@hidden>
Date: Mon Jan 27 07:05:38 2020 +0100
doc: simplify uses of @ref
The PDF output is more consistent: some nodes were not pointed to with
their title. The HTML output becomes "see section Foo" instead of
"see Foo", but this should be addressed in the next Texinfo release.
Info output is simplified, as it uses only the node name and not its
title. But it's considered easier to read this way.
See https://lists.gnu.org/r/help-texinfo/2020-01/msg00031.html.
* doc/bison.texi: Set @xrefautomaticsectiontitle on.
Simplify all uses of ref.
diff --git a/doc/bison.texi b/doc/bison.texi
index a3b947b0..cdb0d26e 100644
--- a/doc/bison.texi
+++ b/doc/bison.texi
@@ -4,6 +4,7 @@
@documentencoding UTF-8
@include version.texi
@settitle Bison @value{VERSION}
+@xrefautomaticsectiontitle on
@tex
\gdef\rgbWarning{0.50 0 0.50}
@@ -320,7 +321,7 @@ The Lexical Analyzer Function @code{yylex}
(line number, etc.) of the token, if the
actions want that.
* Pure Calling:: How the calling convention differs in a pure parser
- (@pxref{Pure Decl, ,A Pure (Reentrant) Parser}).
+ (@pxref{Pure Decl}).
The Bison Parser Algorithm
@@ -692,7 +693,7 @@ reports a syntax error.
A formal grammar is a mathematical construct. To define the language
for Bison, you must write a file expressing the grammar in Bison syntax:
-a @dfn{Bison grammar} file. @xref{Grammar File, ,Bison Grammar Files}.
+a @dfn{Bison grammar} file. @xref{Grammar File}.
A nonterminal symbol in the formal grammar is represented in Bison input
as an identifier, like an identifier in C@. By convention, it should be
@@ -726,7 +727,7 @@ stmt: RETURN expr ';' ;
@end example
@noindent
-@xref{Rules, ,Syntax of Grammar Rules}.
+@xref{Rules}.
@node Semantic Values
@section Semantic Values
@@ -743,8 +744,7 @@ grammatical.
But the precise value is very important for what the input means once it is
parsed. A compiler is useless if it fails to distinguish between 4, 1 and
3989 as constants in the program! Therefore, each token in a Bison grammar
-has both a token type and a @dfn{semantic value}. @xref{Semantics,
-,Defining Language Semantics},
+has both a token type and a @dfn{semantic value}. @xref{Semantics},
for details.
The token type is a terminal symbol defined in the grammar, such as
@@ -1226,7 +1226,7 @@ After checking that @code{yychar} is not set to
@code{YYEMPTY} or
@code{YYEOF}, you can then examine @code{yylval} and @code{yylloc} to
determine the lookahead token's semantic value and location, if any. In a
nondeferred semantic action, you can also modify any of these variables to
-influence syntax analysis. @xref{Lookahead, ,Lookahead Tokens}.
+influence syntax analysis. @xref{Lookahead}.
@findex yyclearin
@cindex GLR parsers and @code{yyclearin}
@@ -1407,7 +1407,7 @@ parser calls the lexical analyzer each time it wants a
new token. It
doesn't know what is ``inside'' the tokens (though their semantic values
may reflect this). Typically the lexical analyzer makes the tokens by
parsing characters of text, but Bison does not depend on this.
-@xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
+@xref{Lexical}.
The Bison parser implementation file is C code which defines a
function named @code{yyparse} which implements that grammar. This
@@ -1416,8 +1416,7 @@ additional functions. One is the lexical analyzer.
Another is an
error-reporting function which the parser calls to report an error.
In addition, a complete C program must start with a function called
@code{main}; you have to provide this, and arrange for it to call
-@code{yyparse} or the parser will never run. @xref{Interface, ,Parser
-C-Language Interface}.
+@code{yyparse} or the parser will never run. @xref{Interface}.
Aside from the token type names and the symbols in the actions you
write, all symbols defined in the Bison parser implementation file
@@ -1438,7 +1437,7 @@ reserved by those headers. On some non-GNU hosts,
@code{<limits.h>},
are included to declare memory allocators and integer types and constants.
@code{<libintl.h>} is included if message translation is in use
(@pxref{Internationalization}). Other system headers may be included
-if you define @code{YYDEBUG} (@pxref{Tracing, ,Tracing Your Parser}) or
+if you define @code{YYDEBUG} (@pxref{Tracing}) or
@code{YYSTACK_USE_ALLOCA} (@pxref{Table of Symbols}) to a nonzero value.
@node Stages
@@ -1452,16 +1451,16 @@ to a working compiler or interpreter, has these parts:
@enumerate
@item
Formally specify the grammar in a form recognized by Bison
-(@pxref{Grammar File, ,Bison Grammar Files}). For each grammatical rule
+(@pxref{Grammar File}). For each grammatical rule
in the language, describe the action that is to be taken when an
instance of that rule is recognized. The action is described by a
sequence of C statements.
@item
Write a lexical analyzer to process input and pass tokens to the parser.
-The lexical analyzer may be written by hand in C (@pxref{Lexical, ,The
-Lexical Analyzer Function @code{yylex}}). It could also be produced
-using Lex, but the use of Lex is not discussed in this manual.
+The lexical analyzer may be written by hand in C (@pxref{Lexical}). It
+could also be produced using Lex, but the use of Lex is not discussed in
+this manual.
@item
Write a controlling function that calls the Bison-produced parser.
@@ -1606,7 +1605,7 @@ after @samp{//}.
%% /* Grammar rules and actions follow. */
@end example
-The declarations section (@pxref{Prologue, , The prologue}) contains two
+The declarations section (@pxref{Prologue}) contains two
preprocessor directives and two forward declarations.
The @code{#include} directive is used to declare the exponentiation
@@ -1619,12 +1618,11 @@ epilogue, but the parser calls them so they must be
declared in the
prologue.
The second section, Bison declarations, provides information to Bison about
-the tokens and their types (@pxref{Bison Declarations, ,The Bison
-Declarations Section}).
+the tokens and their types (@pxref{Bison Declarations}).
The @code{%define} directive defines the variable @code{api.value.type},
thus specifying the C data type for semantic values of both tokens and
-groupings (@pxref{Value Type, ,Data Types of Semantic Values}). The Bison
+groupings (@pxref{Value Type}). The Bison
parser will use whatever type @code{api.value.type} is defined as; if you
don't define it, @code{int} is the default. Because we specify
@samp{@{double@}}, each token and each expression has an associated value,
@@ -1712,7 +1710,7 @@ This definition reads as follows: ``A complete input is
either an empty
string, or a complete input followed by an input line''. Notice that
``complete input'' is defined in terms of itself. This definition is said
to be @dfn{left recursive} since @code{input} appears always as the
-leftmost symbol in the sequence. @xref{Recursion, ,Recursive Rules}.
+leftmost symbol in the sequence. @xref{Recursion}.
The first alternative is empty because there are no symbols between the
colon and the first @samp{|}; this means that @code{input} can match an
@@ -1832,8 +1830,7 @@ The latter, however, is much more readable.
The lexical analyzer's job is low-level parsing: converting characters
or sequences of characters into tokens. The Bison parser gets its
-tokens by calling the lexical analyzer. @xref{Lexical, ,The Lexical
-Analyzer Function @code{yylex}}.
+tokens by calling the lexical analyzer. @xref{Lexical}.
Only a simple lexical analyzer is needed for the RPN
calculator. This
@@ -1856,7 +1853,7 @@ The semantic value of the token (if it has one) is stored
into the global
variable @code{yylval}, which is where the Bison parser will look for it.
(The C data type of @code{yylval} is @code{YYSTYPE}, whose value was defined
at the beginning of the grammar via @samp{%define api.value.type
-@{double@}}; @pxref{Rpcalc Declarations,,Declarations for @code{rpcalc}}.)
+@{double@}}; @pxref{Rpcalc Declarations}.)
A token type code of zero is returned if the end-of-input is encountered.
(Bison recognizes any nonpositive value as indicating end-of-input.)
@@ -1930,7 +1927,7 @@ main (void)
When @code{yyparse} detects a syntax error, it calls the error reporting
function @code{yyerror} to print an error message (usually but not
always @code{"syntax error"}). It is up to the programmer to supply
-@code{yyerror} (@pxref{Interface, ,Parser C-Language Interface}), so
+@code{yyerror} (@pxref{Interface}), so
here is the definition we will use:
@comment file: rpcalc.y
@@ -1963,7 +1960,7 @@ arrange all the source code in one or more source files.
For such a
simple example, the easiest thing is to put everything in one file,
the grammar file. The definitions of @code{yylex}, @code{yyerror} and
@code{main} go at the end, in the epilogue of the grammar file
-(@pxref{Grammar Layout, ,The Overall Layout of a Bison Grammar}).
+(@pxref{Grammar Layout}).
For a large project, you would probably have several source files, and use
@code{make} to arrange to recompile them.
@@ -2111,14 +2108,13 @@ declarations; the higher the line number of the
declaration (lower on
the page or screen), the higher the precedence. Hence, exponentiation
has the highest precedence, unary minus (@code{NEG}) is next, followed
by @samp{*} and @samp{/}, and so on. Unary minus is not associative,
-only precedence matters (@code{%precedence}. @xref{Precedence, ,Operator
-Precedence}.
+only precedence matters (@code{%precedence}. @xref{Precedence}.
The other important new feature is the @code{%prec} in the grammar
section for the unary minus operator. The @code{%prec} simply instructs
Bison that the rule @samp{| '-' exp} has the same precedence as
@code{NEG}---in this case the next-to-highest. @xref{Contextual
-Precedence, ,Context-Dependent Precedence}.
+Precedence}.
Here is a sample run of @file{calc.y}:
@@ -2224,7 +2220,7 @@ the same as the declarations for the infix notation
calculator.
@noindent
Note there are no declarations specific to locations. Defining a data
type for storing locations is not needed: we will use the type provided
-by default (@pxref{Location Type, ,Data Types of Locations}), which is a
+by default (@pxref{Location Type}), which is a
four member structure with the following integer fields:
@code{first_line}, @code{first_column}, @code{last_line} and
@code{last_column}. By conventions, and in accordance with the GNU
@@ -2291,11 +2287,10 @@ pseudo-variable @code{@@$} for groupings.
We don't need to assign a value to @code{@@$}: the output parser does it
automatically. By default, before executing the C code of each action,
-@code{@@$} is set to range from the beginning of @code{@@1} to the end
-of @code{@@@var{n}}, for a rule with @var{n} components. This behavior
-can be redefined (@pxref{Location Default Action, , Default Action for
-Locations}), and for very specific rules, @code{@@$} can be computed by
-hand.
+@code{@@$} is set to range from the beginning of @code{@@1} to the end of
+@code{@@@var{n}}, for a rule with @var{n} components. This behavior can be
+redefined (@pxref{Location Default Action}), and for very specific rules,
+@code{@@$} can be computed by hand.
@node Ltcalc Lexer
@subsection The @code{ltcalc} Lexical Analyzer.
@@ -2479,7 +2474,7 @@ Here are the C and Bison declarations for the
multi-function calculator.
The above grammar introduces only two new features of the Bison language.
These features allow semantic values to have various data types
-(@pxref{Multiple Types, ,More Than One Value Type}).
+(@pxref{Multiple Types}).
The special @code{union} value assigned to the @code{%define} variable
@code{api.value.type} specifies that the symbols are defined with their data
@@ -2496,8 +2491,7 @@ The Bison construct @code{%nterm} is used for declaring
nonterminal symbols,
just as @code{%token} is used for declaring token types. Previously we did
not use @code{%nterm} before because nonterminal symbols are normally
declared implicitly by the rules that define them. But @code{exp} must be
-declared explicitly so we can specify its value type. @xref{Type Decl,
-,Nonterminal Symbols}.
+declared explicitly so we can specify its value type. @xref{Type Decl}.
@node Mfcalc Rules
@subsection Grammar Rules for @code{mfcalc}
@@ -2786,7 +2780,7 @@ Bison generated a definition of @code{YYSTYPE} with a
member named
The error reporting function is unchanged, and the new version of
@code{main} includes a call to @code{init_table} and sets the @code{yydebug}
-on user demand (@xref{Tracing, , Tracing Your Parser}, for details):
+on user demand (@xref{Tracing}, for details):
@comment file: mfcalc.y: 3
@example
@@ -2843,7 +2837,7 @@ Bison takes as input a context-free grammar specification
and produces a
C-language function that recognizes correct instances of the grammar.
The Bison grammar file conventionally has a name ending in @samp{.y}.
-@xref{Invocation, ,Invoking Bison}.
+@xref{Invocation}.
@menu
* Grammar Outline:: Overall layout of the grammar file.
@@ -3065,7 +3059,7 @@ two lines before the warning need to appear near the top
of the parser
implementation file. The first line after the warning is required by
@code{YYSTYPE} and thus also needs to appear in the parser implementation
file. However, if you've instructed Bison to generate a parser header file
-(@pxref{Decl Summary, ,%defines}), you probably want that line to appear
+(@pxref{Decl Summary}), you probably want that line to appear
before the @code{YYSTYPE} definition in that header file as well. The
@code{YYLTYPE} definition should also appear in the parser header file to
override the default @code{YYLTYPE} definition there.
@@ -3264,7 +3258,7 @@ as needed.
The @var{Bison declarations} section contains declarations that define
terminal and nonterminal symbols, specify precedence, and so on.
In some simple grammars you may not need any declarations.
-@xref{Declarations, ,Bison Declarations}.
+@xref{Declarations}.
@node Grammar Rules
@subsection The Grammar Rules Section
@@ -3272,7 +3266,7 @@ In some simple grammars you may not need any declarations.
@cindex rules section for grammar
The @dfn{grammar rules} section contains one or more Bison grammar
-rules, and nothing else. @xref{Rules, ,Syntax of Grammar Rules}.
+rules, and nothing else. @xref{Rules}.
There must always be at least one grammar rule, and the first
@samp{%%} (which precedes the grammar rules) may never be omitted even
@@ -3292,8 +3286,7 @@ before the definition of @code{yyparse}. For example,
the definitions
of @code{yylex} and @code{yyerror} often go here. Because C requires
functions to be declared before being used, you often need to declare
functions like @code{yylex} and @code{yyerror} in the Prologue, even
-if you define them in the Epilogue. @xref{Interface, ,Parser
-C-Language Interface}.
+if you define them in the Epilogue. @xref{Interface}.
If the last section is empty, you may omit the @samp{%%} that separates it
from the grammar rules.
@@ -3340,19 +3333,18 @@ There are three ways of writing terminal symbols in the
grammar:
A @dfn{named token type} is written with an identifier, like an
identifier in C@. By convention, it should be all upper case. Each
such name must be defined with a Bison declaration such as
-@code{%token}. @xref{Token Decl, ,Token Type Names}.
+@code{%token}. @xref{Token Decl}.
@item
@cindex character token
@cindex literal token
@cindex single-character literal
-A @dfn{character token type} (or @dfn{literal character token}) is
-written in the grammar using the same syntax used in C for character
-constants; for example, @code{'+'} is a character token type. A
-character token type doesn't need to be declared unless you need to
-specify its semantic value data type (@pxref{Value Type, ,Data Types of
-Semantic Values}), associativity, or precedence (@pxref{Precedence,
-,Operator Precedence}).
+A @dfn{character token type} (or @dfn{literal character token}) is written
+in the grammar using the same syntax used in C for character constants; for
+example, @code{'+'} is a character token type. A character token type
+doesn't need to be declared unless you need to specify its semantic value
+data type (@pxref{Value Type}), associativity, or precedence
+(@pxref{Precedence}).
By convention, a character token type is used only to represent a
token that consists of that particular character. Thus, the token
@@ -3360,11 +3352,10 @@ type @code{'+'} is used to represent the character
@samp{+} as a
token. Nothing enforces this convention, but if you depart from it,
your program will confuse other readers.
-All the usual escape sequences used in character literals in C can be
-used in Bison as well, but you must not use the null character as a
-character literal because its numeric code, zero, signifies
-end-of-input (@pxref{Calling Convention, ,Calling Convention
-for @code{yylex}}). Also, unlike standard C, trigraphs have no
+All the usual escape sequences used in character literals in C can be used
+in Bison as well, but you must not use the null character as a character
+literal because its numeric code, zero, signifies end-of-input
+(@pxref{Calling Convention}). Also, unlike standard C, trigraphs have no
special meaning in Bison character literals, nor is backslash-newline
allowed.
@@ -3378,11 +3369,10 @@ doesn't need to be declared unless you need to specify
its semantic
value data type (@pxref{Value Type}), associativity, or precedence
(@pxref{Precedence}).
-You can associate the literal string token with a symbolic name as an
-alias, using the @code{%token} declaration (@pxref{Token Decl, ,Token
-Declarations}). If you don't do that, the lexical analyzer has to
-retrieve the token number for the literal string token from the
-@code{yytname} table (@pxref{Calling Convention}).
+You can associate the literal string token with a symbolic name as an alias,
+using the @code{%token} declaration (@pxref{Token Decl}). If you don't do
+that, the lexical analyzer has to retrieve the token number for the literal
+string token from the @code{yytname} table (@pxref{Calling Convention}).
@strong{Warning}: literal string tokens do not work in Yacc.
@@ -3415,13 +3405,13 @@ char} to avoid sign-extension on hosts where
@code{char} is signed.
Each named token type becomes a C macro in the parser implementation
file, so @code{yylex} can use the name to stand for the code. (This
is why periods don't make sense in terminal symbols.) @xref{Calling
-Convention, ,Calling Convention for @code{yylex}}.
+Convention}.
If @code{yylex} is defined in a separate file, you need to arrange for the
token-type macro definitions to be available there. Use the @samp{-d}
option when you run Bison, so that it will write these macro definitions
into a separate header file @file{@var{name}.tab.h} which you can include
-in the other source files that need it. @xref{Invocation, ,Invoking Bison}.
+in the other source files that need it. @xref{Invocation}.
If you want to write a grammar that is portable to any Standard C
host, you must use only nonnull character tokens taken from the basic
@@ -3628,7 +3618,7 @@ parse a sequence of any number of elements with bounded
stack space.
Right recursion uses up space on the Bison stack in proportion to the
number of elements in the sequence, because all the elements must be
shifted onto the stack before the rule can be applied even once.
-@xref{Algorithm, ,The Bison Parser Algorithm}, for further explanation
+@xref{Algorithm}, for further explanation
of this.
@cindex mutual recursion
@@ -3695,8 +3685,7 @@ the numbers associated with @var{x} and @var{y}.
In a simple program it may be sufficient to use the same data type for
the semantic values of all language constructs. This was true in the
-RPN and infix calculator examples (@pxref{RPN Calc, ,Reverse Polish
-Notation Calculator}).
+RPN and infix calculator examples (@pxref{RPN Calc}).
Bison normally uses the type @code{int} for semantic values if your
program uses the same data type for all language constructs. To
@@ -3727,7 +3716,7 @@ this:
@noindent
This macro definition must go in the prologue of the grammar file
-(@pxref{Grammar Outline, ,Outline of a Bison Grammar}). If compatibility
+(@pxref{Grammar Outline}). If compatibility
with POSIX Yacc matters to you, use this. Note however that Bison cannot
know @code{YYSTYPE}'s value, not even whether it is defined, so there are
services it cannot provide. Besides this works only for languages that have
@@ -3754,13 +3743,11 @@ options:
let Bison compute the union type from the tags you assign to symbols;
@item
-use the @code{%union} Bison declaration (@pxref{Union Decl, ,The Union
-Declaration});
+use the @code{%union} Bison declaration (@pxref{Union Decl});
@item
define the @code{%define} variable @code{api.value.type} to be a union type
-whose members are the type tags (@pxref{Structured Value Type,, Providing a
-Structured Semantic Value Type});
+whose members are the type tags (@pxref{Structured Value Type});
@item
use a @code{typedef} or a @code{#define} to define @code{YYSTYPE} to be a
@@ -3770,9 +3757,9 @@ union type whose member names are the type tags.
@item
Choose one of those types for each symbol (terminal or nonterminal) for
which semantic values are used. This is done for tokens with the
-@code{%token} Bison declaration (@pxref{Token Decl, ,Token Type Names}) and
+@code{%token} Bison declaration (@pxref{Token Decl}) and
for groupings with the @code{%nterm}/@code{%type} Bison declarations
-(@pxref{Type Decl, ,Nonterminal Symbols}).
+(@pxref{Type Decl}).
@end itemize
@node Type Generation
@@ -3819,7 +3806,7 @@ return ID;
@end example
If the @code{%define} variable @code{api.token.prefix} is defined
-(@pxref{%define Summary,,api.token.prefix}), then it is also used to prefix
+(@pxref{%define Summary}), then it is also used to prefix
the union member names. For instance, with @samp{%define api.token.prefix
@{TOK_@}}:
@@ -3881,7 +3868,7 @@ example:
@noindent
specifies the union tag @code{value}, so the corresponding C type is
@code{union value}. If you do not specify a tag, it defaults to
-@code{YYSTYPE} (@pxref{%define Summary,,api.value.union.name}).
+@code{YYSTYPE} (@pxref{%define Summary}).
As another extension to POSIX, you may specify multiple @code{%union}
declarations; their contents are concatenated. However, only the first
@@ -3950,7 +3937,7 @@ placed at any position in the rule;
it is executed at that position. Most rules have just one action at the
end of the rule, following all the components. Actions in the middle of
a rule are tricky and used only for special purposes (@pxref{Midrule
-Actions, ,Actions in Midrule}).
+Actions}).
The C code in an action can refer to the semantic values of the
components matched by the rule with the construct @code{$@var{n}},
@@ -4046,7 +4033,7 @@ definition of @code{foo}.
It is also possible to access the semantic value of the lookahead token, if
any, from a semantic action.
This semantic value is stored in @code{yylval}.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
@node Action Types
@subsection Data Types of Values in Actions
@@ -4213,7 +4200,7 @@ In the above example, if the parser initiates error
recovery (@pxref{Error
Recovery}) while parsing the tokens in the embedded statement @code{stmt},
it might discard the previous semantic context @code{$<context>5} without
restoring it. Thus, @code{$<context>5} needs a destructor
-(@pxref{Destructor Decl, , Freeing Discarded Symbols}), and Bison needs the
+(@pxref{Destructor Decl}), and Bison needs the
type of the semantic value (@code{context}) to select the right destructor.
As an extension to Yacc's midrule actions, Bison offers a means to type
@@ -4270,7 +4257,7 @@ is specified once).
Midrule actions are actually transformed into regular rules and actions.
The various reports generated by Bison (textual, graphical, etc., see
-@ref{Understanding, , Understanding Your Parser}) reveal this translation,
+@ref{Understanding}) reveal this translation,
best explained by means of an example. The following rule:
@example
@@ -4312,8 +4299,7 @@ There are probably two errors in the above example: the
first midrule action
does not generate a value (it does not use @code{$$} although the final
action uses it), and the value of the second one is not used (the final
action does not use @code{$3}). Bison reports these errors when the
-@code{midrule-value} warnings are enabled (@pxref{Invocation, ,Invoking
-Bison}):
+@code{midrule-value} warnings are enabled (@pxref{Invocation}):
@example
$ @kbd{bison -Wmidrule-value mid.y}
@@ -4408,7 +4394,7 @@ when it has read no farther than the open-brace. In
other words, it
must commit to using one rule or the other, without sufficient
information to do it correctly. (The open-brace token is what is called
the @dfn{lookahead} token at this time, since the parser is still
-deciding what to do about it. @xref{Lookahead, ,Lookahead Tokens}.)
+deciding what to do about it. @xref{Lookahead}.)
You might think that you could correct the problem by putting identical
actions into the two rules, like this:
@@ -4516,7 +4502,7 @@ When @code{YYLTYPE} is not defined, at the beginning of
the parsing, Bison
initializes all these fields to 1 for @code{yylloc}. To initialize
@code{yylloc} with a custom location type (or to chose a different
initialization), use the @code{%initial-action} directive. @xref{Initial
-Action Decl, , Performing Actions before Parsing}.
+Action Decl}.
@node Actions and Locations
@subsection Actions and Locations
@@ -4598,7 +4584,7 @@ exp:
It is also possible to access the location of the lookahead token, if any,
from a semantic action.
This location is stored in @code{yylloc}.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
@node Location Default Action
@subsection Default Action for Locations
@@ -4780,12 +4766,11 @@ used in formulating the grammar and the data types of
semantic values.
All token type names (but not single-character literal tokens such as
@code{'+'} and @code{'*'}) must be declared. Nonterminal symbols must be
declared if you need to specify which data type to use for the semantic
-value (@pxref{Multiple Types, ,More Than One Value Type}).
+value (@pxref{Multiple Types}).
The first rule in the grammar file also specifies the start symbol, by
default. If you want some other symbol to be the start symbol, you
-must declare it explicitly (@pxref{Language and Grammar, ,Languages
-and Context-Free Grammars}).
+must declare it explicitly (@pxref{Language and Grammar}).
@menu
* Require Decl:: Requiring a Bison version.
@@ -4852,7 +4837,7 @@ that the function @code{yylex} (if it is in this file)
can use the name
Alternatively, you can use @code{%left}, @code{%right}, @code{%precedence},
or @code{%nonassoc} instead of @code{%token}, if you wish to specify
-associativity and precedence. @xref{Precedence Decl, ,Operator Precedence}.
+associativity and precedence. @xref{Precedence Decl}.
You can explicitly specify the numeric code for a token type by appending a
nonnegative decimal or hexadecimal integer value in the field immediately
@@ -4870,8 +4855,7 @@ each other or with normal characters.
In the event that the stack type is a union, you must augment the
@code{%token} or other token declaration to include the data type
-alternative delimited by angle-brackets (@pxref{Multiple Types, ,More Than
-One Value Type}).
+alternative delimited by angle-brackets (@pxref{Multiple Types}).
For example:
@@ -4928,7 +4912,7 @@ allows for nicer error messages referring to ``end of
file'' instead of
Use the @code{%left}, @code{%right}, @code{%nonassoc}, or @code{%precedence}
declaration to declare a token and specify its precedence and associativity,
all at once. These are called @dfn{precedence declarations}.
-@xref{Precedence, ,Operator Precedence}, for general information on operator
+@xref{Precedence}, for general information on operator
precedence.
The syntax of a precedence declaration is nearly the same as that of
@@ -5002,7 +4986,7 @@ used. This is done with a @code{%type} declaration, like
this:
@noindent
Here @var{nonterminal} is the name of a nonterminal symbol, and @var{type}
is the name given in the @code{%union} to the alternative that you want
-(@pxref{Union Decl, ,The Union Declaration}). You can give any number of
+(@pxref{Union Decl}). You can give any number of
nonterminal symbols in the same @code{%type} declaration, if they have the
same value type. Use spaces to separate the symbol names.
@@ -5095,8 +5079,7 @@ Invoke the braced @var{code} whenever the parser discards
one of the
@var{symbols}. Within @var{code}, @code{$$} (or @code{$<@var{tag}>$})
designates the semantic value associated with the discarded symbol, and
@code{@@$} designates its location. The additional parser parameters are
-also available (@pxref{Parser Function, , The Parser Function
-@code{yyparse}}).
+also available (@pxref{Parser Function}).
When a symbol is listed among @var{symbols}, its @code{%destructor} is called a
per-symbol @code{%destructor}.
@@ -5152,10 +5135,10 @@ A Bison-generated parser invokes the default
@code{%destructor}s only for
user-defined as opposed to Bison-defined symbols.
For example, the parser will not invoke either kind of default
@code{%destructor} for the special Bison-defined symbols @code{$accept},
-@code{$undefined}, or @code{$end} (@pxref{Table of Symbols, ,Bison Symbols}),
+@code{$undefined}, or @code{$end} (@pxref{Table of Symbols}),
none of which you can reference in your grammar.
It also will not invoke either for the @code{error} token (@pxref{Table of
-Symbols, ,error}), which is always defined by Bison regardless of whether you
+Symbols}), which is always defined by Bison regardless of whether you
reference it in your grammar.
However, it may invoke one of them for the end token (token 0) if you
redefine it from @code{$end} to, for example, @code{END}:
@@ -5167,7 +5150,7 @@ redefine it from @code{$end} to, for example, @code{END}:
@cindex actions in midrule
@cindex midrule actions
Finally, Bison will never invoke a @code{%destructor} for an unreferenced
-midrule semantic value (@pxref{Midrule Actions,,Actions in Midrule}).
+midrule semantic value (@pxref{Midrule Actions}).
That is, Bison does not consider a midrule to have a semantic value if you
do not reference @code{$$} in the midrule's action or @code{$@var{n}}
(where @var{n} is the right-hand side symbol position of the midrule) in
@@ -5218,14 +5201,14 @@ the memory.
@findex %printer
@findex <*>
@findex <>
-When run-time traces are enabled (@pxref{Tracing, ,Tracing Your Parser}),
+When run-time traces are enabled (@pxref{Tracing}),
the parser reports its actions, such as reductions. When a symbol involved
in an action is reported, only its kind is displayed, as the parser cannot
know how semantic values should be formatted.
The @code{%printer} directive defines code that is called when a symbol is
reported. Its syntax is the same as @code{%destructor} (@pxref{Destructor
-Decl, , Freeing Discarded Symbols}).
+Decl}).
@deffn {Directive} %printer @{ @var{code} @} @var{symbols}
@findex %printer
@@ -5236,11 +5219,10 @@ Invoke the braced @var{code} whenever the parser
displays one of the
@code{FILE*} in C, and an @code{std::ostream&} in C++), @code{$$} (or
@code{$<@var{tag}>$}) designates the semantic value associated with the
symbol, and @code{@@$} its location. The additional parser parameters are
-also available (@pxref{Parser Function, , The Parser Function
-@code{yyparse}}).
+also available (@pxref{Parser Function}).
The @var{symbols} are defined as for @code{%destructor} (@pxref{Destructor
-Decl, , Freeing Discarded Symbols}.): they can be per-type (e.g.,
+Decl}.): they can be per-type (e.g.,
@samp{<ival>}), per-symbol (e.g., @samp{exp}, @samp{NUM}, @samp{"float"}),
typed per-default (i.e., @samp{<*>}, or untyped per-default (i.e.,
@samp{<>}).
@@ -5271,8 +5253,7 @@ value by default. However, when the parser displays a
@code{STRING1} or a
@code{string1}, it formats it as a string in double quotes. It performs
only the second @code{%printer} in this case, so it prints only once.
Finally, the parser print @samp{<>} for any symbol, such as @code{TAGLESS},
-that has no semantic type tag. @xref{Mfcalc Traces, ,Enabling Debug Traces
-for @code{mfcalc}}, for a complete example.
+that has no semantic type tag. @xref{Mfcalc Traces}, for a complete example.
@@ -5286,7 +5267,7 @@ for @code{mfcalc}}, for a complete example.
@findex %expect-rr
Bison normally warns if there are any conflicts in the grammar
-(@pxref{Shift/Reduce, ,Shift/Reduce Conflicts}), but most real grammars
+(@pxref{Shift/Reduce}), but most real grammars
have harmless shift/reduce conflicts which are resolved in a predictable
way and would be difficult to eliminate. It is desirable to suppress
the warning about these conflicts unless the number of conflicts
@@ -5340,7 +5321,7 @@ empty_dims:
@end example
Mid-rule actions generate implicit rules that are also subject to conflicts
-(@pxref{Midrule Conflicts,, Conflicts due to Midrule Actions}). To attach
+(@pxref{Midrule Conflicts}). To attach
an @code{%expect} or @code{%expect-rr} annotation to an implicit
mid-rule action's rule, put it before the action. For example,
@@ -5437,13 +5418,11 @@ reentrant. It looks like this:
The result is that the communication variables @code{yylval} and
@code{yylloc} become local variables in @code{yyparse}, and a different
-calling convention is used for the lexical analyzer function
-@code{yylex}. @xref{Pure Calling, ,Calling Conventions for Pure
-Parsers}, for the details of this. The variable @code{yynerrs}
-becomes local in @code{yyparse} in pull mode but it becomes a member
-of @code{yypstate} in push mode. (@pxref{Error Reporting, ,The Error
-Reporting Function @code{yyerror}}). The convention for calling
-@code{yyparse} itself is unchanged.
+calling convention is used for the lexical analyzer function @code{yylex}.
+@xref{Pure Calling}, for the details of this. The variable @code{yynerrs}
+becomes local in @code{yyparse} in pull mode but it becomes a member of
+@code{yypstate} in push mode. (@pxref{Error Reporting}). The convention
+for calling @code{yyparse} itself is unchanged.
Whether the parser is pure has nothing to do with the grammar rules.
You can generate either a pure parser or a nonreentrant parser from any
@@ -5466,14 +5445,14 @@ within a certain time period.
Normally, Bison generates a pull parser.
The following Bison declaration says that you want the parser to be a push
-parser (@pxref{%define Summary,,api.push-pull}):
+parser (@pxref{%define Summary}):
@example
%define api.push-pull push
@end example
In almost all cases, you want to ensure that your push parser is also
-a pure parser (@pxref{Pure Decl, ,A Pure (Reentrant) Parser}). The only
+a pure parser (@pxref{Pure Decl}). The only
time you should create an impure push parser is to have backwards
compatibility with the impure Yacc pull mode interface. Unless you know
what you are doing, your declarations should look like this:
@@ -5566,40 +5545,40 @@ Here is a summary of the declarations used to define a
grammar:
@deffn {Directive} %union
Declare the collection of data types that semantic values may have
-(@pxref{Union Decl, ,The Union Declaration}).
+(@pxref{Union Decl}).
@end deffn
@deffn {Directive} %token
Declare a terminal symbol (token type name) with no precedence
-or associativity specified (@pxref{Token Decl, ,Token Type Names}).
+or associativity specified (@pxref{Token Decl}).
@end deffn
@deffn {Directive} %right
Declare a terminal symbol (token type name) that is right-associative
-(@pxref{Precedence Decl, ,Operator Precedence}).
+(@pxref{Precedence Decl}).
@end deffn
@deffn {Directive} %left
Declare a terminal symbol (token type name) that is left-associative
-(@pxref{Precedence Decl, ,Operator Precedence}).
+(@pxref{Precedence Decl}).
@end deffn
@deffn {Directive} %nonassoc
Declare a terminal symbol (token type name) that is nonassociative
-(@pxref{Precedence Decl, ,Operator Precedence}).
+(@pxref{Precedence Decl}).
Using it in a way that would be associative is a syntax error.
@end deffn
@ifset defaultprec
@deffn {Directive} %default-prec
Assign a precedence to rules lacking an explicit @code{%prec} modifier
-(@pxref{Contextual Precedence, ,Context-Dependent Precedence}).
+(@pxref{Contextual Precedence}).
@end deffn
@end ifset
@deffn {Directive} %nterm
Declare the type of semantic values for a nonterminal symbol (@pxref{Type
-Decl, ,Nonterminal Symbols}).
+Decl}).
@end deffn
@deffn {Directive} %type
@@ -5608,20 +5587,19 @@ Declare the type of semantic values for a symbol
(@pxref{Type Decl,
@end deffn
@deffn {Directive} %start
-Specify the grammar's start symbol (@pxref{Start Decl, ,The
-Start-Symbol}).
+Specify the grammar's start symbol (@pxref{Start Decl}).
@end deffn
@deffn {Directive} %expect
Declare the expected number of shift-reduce conflicts, either overall or
for a given rule
-(@pxref{Expect Decl, ,Suppressing Conflict Warnings}).
+(@pxref{Expect Decl}).
@end deffn
@deffn {Directive} %expect-rr
Declare the expected number of reduce-reduce conflicts, either overall or
for a given rule
-(@pxref{Expect Decl, ,Suppressing Conflict Warnings}).
+(@pxref{Expect Decl}).
@end deffn
@@ -5641,7 +5619,7 @@ default location or at the location specified by
@var{qualifier}.
@deffn {Directive} %debug
Instrument the parser for traces. Obsoleted by @samp{%define
parse.trace}.
-@xref{Tracing, ,Tracing Your Parser}.
+@xref{Tracing}.
@end deffn
@deffn {Directive} %define @var{variable}
@@ -5659,18 +5637,16 @@ the parser header file is named @file{@var{name}.h}.
For C parsers, the parser header file declares @code{YYSTYPE} unless
@code{YYSTYPE} is already defined as a macro or you have used a
-@code{<@var{type}>} tag without using @code{%union}. Therefore, if
-you are using a @code{%union} (@pxref{Multiple Types, ,More Than One
-Value Type}) with components that require other definitions, or if you
-have defined a @code{YYSTYPE} macro or type definition (@pxref{Value
-Type, ,Data Types of Semantic Values}), you need to arrange for these
-definitions to be propagated to all modules, e.g., by putting them in
-a prerequisite header that is included both by your parser and by any
-other module that needs @code{YYSTYPE}.
+@code{<@var{type}>} tag without using @code{%union}. Therefore, if you are
+using a @code{%union} (@pxref{Multiple Types}) with components that require
+other definitions, or if you have defined a @code{YYSTYPE} macro or type
+definition (@pxref{Value Type}), you need to arrange for these definitions
+to be propagated to all modules, e.g., by putting them in a prerequisite
+header that is included both by your parser and by any other module that
+needs @code{YYSTYPE}.
Unless your parser is pure, the parser header file declares
-@code{yylval} as an external variable. @xref{Pure Decl, ,A Pure
-(Reentrant) Parser}.
+@code{yylval} as an external variable. @xref{Pure Decl}.
If you have also used locations, the parser header file declares
@code{YYLTYPE} and @code{yylloc} using a protocol similar to that of the
@@ -5680,7 +5656,7 @@ This parser header file is normally essential if you wish
to put the
definition of @code{yylex} in a separate source file, because
@code{yylex} typically needs to be able to refer to the
above-mentioned declarations and to the token type codes. @xref{Token
-Values, ,Semantic Values of Tokens}.
+Values}.
@findex %code requires
@findex %code provides
@@ -5712,7 +5688,7 @@ Same as above, but save in the file
@file{@var{defines-file}}.
@deffn {Directive} %destructor
Specify how the parser should reclaim the memory associated to
-discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}.
+discarded symbols. @xref{Destructor Decl}.
@end deffn
@deffn {Directive} %file-prefix "@var{prefix}"
@@ -5727,15 +5703,15 @@ case-insensitive.
@end deffn
@deffn {Directive} %locations
-Generate the code processing the locations (@pxref{Action Features, ,Special
-Features for Use in Actions}). This mode is enabled as soon as the grammar
-uses the special @samp{@@@var{n}} tokens, but if your grammar does not use
-it, using @samp{%locations} allows for more accurate syntax error messages.
+Generate the code processing the locations (@pxref{Action Features}). This
+mode is enabled as soon as the grammar uses the special @samp{@@@var{n}}
+tokens, but if your grammar does not use it, using @samp{%locations} allows
+for more accurate syntax error messages.
@end deffn
@deffn {Directive} %name-prefix "@var{prefix}"
Obsoleted by @samp{%define api.prefix @{@var{prefix}@}}. @xref{Multiple
-Parsers, ,Multiple Parsers in the Same Program}. For C++ parsers, see the
+Parsers}. For C++ parsers, see the
@samp{%define api.namespace} documentation in this section.
Rename the external symbols used in the parser so that they start with
@@ -5756,7 +5732,7 @@ by @code{%name-prefix}, for instance @code{YYDEBUG},
@code{YYTOKENTYPE},
@ifset defaultprec
@deffn {Directive} %no-default-prec
Do not assign a precedence to rules lacking an explicit @code{%prec}
-modifier (@pxref{Contextual Precedence, ,Context-Dependent Precedence}).
+modifier (@pxref{Contextual Precedence}).
@end deffn
@end ifset
@@ -5775,13 +5751,12 @@ Generate the parser implementation in @file{@var{file}}.
@deffn {Directive} %pure-parser
Deprecated version of @samp{%define api.pure} (@pxref{%define
-Summary,,api.pure}), for which Bison is more careful to warn about
+Summary}), for which Bison is more careful to warn about
unreasonable usage.
@end deffn
@deffn {Directive} %require "@var{version}"
-Require version @var{version} or higher of Bison. @xref{Require Decl, ,
-Require a Version of Bison}.
+Require version @var{version} or higher of Bison. @xref{Require Decl}.
@end deffn
@deffn {Directive} %skeleton "@var{file}"
@@ -5836,7 +5811,7 @@ The number of parser states (@pxref{Parser States}).
@deffn {Directive} %verbose
Write an extra output file containing verbose descriptions of the parser
states and what is done for each type of lookahead token in that state.
-@xref{Understanding, , Understanding Your Parser}, for more information.
+@xref{Understanding}, for more information.
@end deffn
@deffn {Directive} %yacc
@@ -5890,7 +5865,7 @@ In this case, Bison selects a default value.
What @var{variable}s are accepted, as well as their meanings and default
values, depend on the selected target language and/or the parser skeleton
-(@pxref{Decl Summary,,%language}, @pxref{Decl Summary,,%skeleton}).
+(@pxref{Decl Summary}, @pxref{Decl Summary}).
Unaccepted @var{variable}s produce an error. Some of the accepted
@var{variable}s are described below.
@@ -6046,7 +6021,7 @@ Introduced in Bison 3.3 to replace
@code{parser_class_name}.
@item Language(s): All
@item Purpose: Rename exported symbols.
-@xref{Multiple Parsers, ,Multiple Parsers in the Same Program}.
+@xref{Multiple Parsers}.
@item Accepted Values: String
@@ -6064,7 +6039,7 @@ Introduced in Bison 3.3 to replace
@code{parser_class_name}.
@item Language(s): C
@item Purpose: Request a pure (reentrant) parser program.
-@xref{Pure Decl, ,A Pure (Reentrant) Parser}.
+@xref{Pure Decl}.
@item Accepted Values: @code{true}, @code{false}, @code{full}
@@ -6095,8 +6070,7 @@ used, then both parsers have the same signature:
void yyerror (YYLTYPE *llocp, int *nastiness, char const *msg);
@end example
-(@pxref{Error Reporting, ,The Error
-Reporting Function @code{yyerror}})
+(@pxref{Error Reporting})
@item Default Value: @code{false}
@@ -6115,7 +6089,7 @@ the @code{full} value was introduced in Bison 2.7
@item Language(s): C (deterministic parsers only)
@item Purpose: Request a pull parser, a push parser, or both.
-@xref{Push Decl, ,A Push Parser}.
+@xref{Push Decl}.
@item Accepted Values: @code{pull}, @code{push}, @code{both}
@@ -6176,7 +6150,7 @@ informational files (@file{*.output}, @file{*.xml},
@file{*.gv}) are not
modified by this prefix.
Bison also prefixes the generated member names of the semantic value union.
-@xref{Type Generation,, Generating the Semantic Value Type}, for more
+@xref{Type Generation}, for more
details.
See @ref{Calc++ Parser} and @ref{Calc++ Scanner}, for a complete example.
@@ -6309,7 +6283,7 @@ yet.
@item @samp{union-directive} (C, C++)
The type is defined thanks to the @code{%union} directive. You don't have
to define @code{api.value.type} in that case, using @code{%union} suffices.
-@xref{Union Decl, ,The Union Declaration}.
+@xref{Union Decl}.
For instance:
@example
%define api.value.type union-directive
@@ -6552,7 +6526,7 @@ syntax error handling. @xref{LAC}.
@item Languages(s): C, C++, Java
@item Purpose: Require parser instrumentation for tracing.
-@xref{Tracing, ,Tracing Your Parser}.
+@xref{Tracing}.
In C/C++, define the macro @code{YYDEBUG} (or @code{@var{prefix}DEBUG} with
@samp{%define api.prefix @{@var{prefix}@}}), see @ref{Multiple Parsers,
@@ -6711,7 +6685,7 @@ The easy way to do this is to define the @code{%define}
variable
headers do not conflict when included together, and that compiled objects
can be linked together too. Specifying @samp{%define api.prefix
@{@var{prefix}@}} (or passing the option @samp{-Dapi.prefix=@{@var{prefix}@}},
see
-@ref{Invocation, ,Invoking Bison}) renames the interface functions and
+@ref{Invocation}) renames the interface functions and
variables of the Bison parser to start with @var{prefix} instead of
@samp{yy}, and all the macros to start by @var{PREFIX} (i.e., @var{prefix}
upper-cased) instead of @samp{YY}.
@@ -6801,8 +6775,8 @@ extern int cdebug;
@sp 2
Prior to Bison 2.6, a feature similar to @code{api.prefix} was provided by
-the obsolete directive @code{%name-prefix} (@pxref{Table of Symbols, ,Bison
-Symbols}) and the option @option{--name-prefix} (@pxref{Output Files}).
+the obsolete directive @code{%name-prefix} (@pxref{Table of Symbols}) and
+the option @option{--name-prefix} (@pxref{Output Files}).
@node Interface
@chapter Parser C-Language Interface
@@ -6933,7 +6907,7 @@ int yyparse (int *randomness);
You call the function @code{yypush_parse} to parse a single token. This
function is available if either the @samp{%define api.push-pull push} or
@samp{%define api.push-pull both} declaration is used.
-@xref{Push Decl, ,A Push Parser}.
+@xref{Push Decl}.
@deftypefun int yypush_parse (@code{yypstate *}@var{yyps})
The value returned by @code{yypush_parse} is the same as for @code{yyparse}
@@ -6956,7 +6930,7 @@ was invalid.
You call the function @code{yypull_parse} to parse the rest of the input
stream. This function is available if the @samp{%define api.push-pull both}
declaration is used.
-@xref{Push Decl, ,A Push Parser}.
+@xref{Push Decl}.
@deftypefun int yypull_parse (@code{yypstate *}@var{yyps})
The value returned by @code{yypull_parse} is the same as for @code{yyparse}.
@@ -6971,7 +6945,7 @@ The parser instance @code{yyps} may be reused for new
parses.
You call the function @code{yypstate_new} to create a new parser instance.
This function is available if either the @samp{%define api.push-pull push} or
@samp{%define api.push-pull both} declaration is used.
-@xref{Push Decl, ,A Push Parser}.
+@xref{Push Decl}.
@deftypefun {yypstate*} yypstate_new (@code{void})
The function will return a valid parser instance if there was memory available
@@ -6987,7 +6961,7 @@ allocated.
You call the function @code{yypstate_delete} to delete a parser instance.
function is available if either the @samp{%define api.push-pull push} or
@samp{%define api.push-pull both} declaration is used.
-@xref{Push Decl, ,A Push Parser}.
+@xref{Push Decl}.
@deftypefun void yypstate_delete (@code{yypstate *}@var{yyps})
This function will reclaim the memory associated with a parser instance.
@@ -7010,8 +6984,7 @@ file, you need to arrange for the token-type macro
definitions to be
available there. To do this, use the @samp{-d} option when you run
Bison, so that it will write these macro definitions into the separate
parser header file, @file{@var{name}.tab.h}, which you can include in
-the other source files that need it. @xref{Invocation, ,Invoking
-Bison}.
+the other source files that need it. @xref{Invocation}.
@menu
* Calling Convention:: How @code{yyparse} calls @code{yylex}.
@@ -7022,7 +6995,7 @@ Bison}.
(line number, etc.) of the token, if the
actions want that.
* Pure Calling:: How the calling convention differs in a pure parser
- (@pxref{Pure Decl, ,A Pure (Reentrant) Parser}).
+ (@pxref{Pure Decl}).
@end menu
@node Calling Convention
@@ -7135,11 +7108,10 @@ Thus, if the type is @code{int} (the default), you
might write this in
@end group
@end example
-When you are using multiple data types, @code{yylval}'s type is a union
-made from the @code{%union} declaration (@pxref{Union Decl, ,The
-Union Declaration}). So when you store a token's value, you
-must use the proper member of the union. If the @code{%union}
-declaration looks like this:
+When you are using multiple data types, @code{yylval}'s type is a union made
+from the @code{%union} declaration (@pxref{Union Decl}). So when you store
+a token's value, you must use the proper member of the union. If the
+@code{%union} declaration looks like this:
@example
@group
@@ -7187,12 +7159,11 @@ The data type of @code{yylloc} has the name
@code{YYLTYPE}.
@subsection Calling Conventions for Pure Parsers
When you use the Bison declaration @code{%define api.pure full} to request a
-pure, reentrant parser, the global communication variables @code{yylval}
-and @code{yylloc} cannot be used. (@xref{Pure Decl, ,A Pure (Reentrant)
-Parser}.) In such parsers the two global variables are replaced by
-pointers passed as arguments to @code{yylex}. You must declare them as
-shown here, and pass the information back by storing it through those
-pointers.
+pure, reentrant parser, the global communication variables @code{yylval} and
+@code{yylloc} cannot be used. (@xref{Pure Decl}.) In such parsers the two
+global variables are replaced by pointers passed as arguments to
+@code{yylex}. You must declare them as shown here, and pass the information
+back by storing it through those pointers.
@example
int
@@ -7275,8 +7246,7 @@ int yyparse (parser_mode *mode, environment_type *env);
The Bison parser detects a @dfn{syntax error} (or @dfn{parse error})
whenever it reads a token which cannot satisfy any syntax rule. An
action in the grammar can also explicitly proclaim an error, using the
-macro @code{YYERROR} (@pxref{Action Features, ,Special Features for Use
-in Actions}).
+macro @code{YYERROR} (@pxref{Action Features}).
The Bison parser expects to report the error by calling an error
reporting function named @code{yyerror}, which you must supply. It is
@@ -7286,7 +7256,7 @@ receives one argument. For a syntax error, the string is
normally
@findex %define parse.error
If you invoke @samp{%define parse.error verbose} in the Bison declarations
-section (@pxref{Bison Declarations, ,The Bison Declarations Section}), then
+section (@pxref{Bison Declarations}), then
Bison provides a more verbose and specific error message string instead of
just plain @w{@code{"syntax error"}}. However, that message sometimes
contains incorrect information if LAC is not enabled (@pxref{LAC}).
@@ -7349,7 +7319,7 @@ preferable since it more accurately describes the return
type for
@vindex yynerrs
The variable @code{yynerrs} contains the number of syntax errors
reported so far. Normally this variable is global; but if you
-request a pure parser (@pxref{Pure Decl, ,A Pure (Reentrant) Parser})
+request a pure parser (@pxref{Pure Decl})
then it is a local variable which only the actions can access.
@node Action Features
@@ -7372,24 +7342,23 @@ Acts like a variable that contains the semantic value
for the
@deffn {Variable} $<@var{typealt}>$
Like @code{$$} but specifies alternative @var{typealt} in the union
-specified by the @code{%union} declaration. @xref{Action Types, ,Data
-Types of Values in Actions}.
+specified by the @code{%union} declaration. @xref{Action Types}.
@end deffn
@deffn {Variable} $<@var{typealt}>@var{n}
Like @code{$@var{n}} but specifies alternative @var{typealt} in the
union specified by the @code{%union} declaration.
-@xref{Action Types, ,Data Types of Values in Actions}.
+@xref{Action Types}.
@end deffn
@deffn {Macro} YYABORT @code{;}
Return immediately from @code{yyparse}, indicating failure.
-@xref{Parser Function, ,The Parser Function @code{yyparse}}.
+@xref{Parser Function}.
@end deffn
@deffn {Macro} YYACCEPT @code{;}
Return immediately from @code{yyparse}, indicating success.
-@xref{Parser Function, ,The Parser Function @code{yyparse}}.
+@xref{Parser Function}.
@end deffn
@deffn {Macro} YYBACKUP (@var{token}, @var{value})@code{;}
@@ -7439,7 +7408,7 @@ lookahead is the end of the input stream, or
@code{YYEMPTY} when no lookahead
has been performed so the next token is not yet known.
Do not modify @code{yychar} in a deferred semantic action (@pxref{GLR Semantic
Actions}).
-@xref{Lookahead, ,Lookahead Tokens}.
+@xref{Lookahead}.
@end deffn
@deffn {Macro} yyclearin @code{;}
@@ -7461,7 +7430,7 @@ Variable containing the lookahead token location when
@code{yychar} is not set
to @code{YYEMPTY} or @code{YYEOF}.
Do not modify @code{yylloc} in a deferred semantic action (@pxref{GLR Semantic
Actions}).
-@xref{Actions and Locations, ,Actions and Locations}.
+@xref{Actions and Locations}.
@end deffn
@deffn {Variable} yylval
@@ -7469,7 +7438,7 @@ Variable containing the lookahead token semantic value
when @code{yychar} is
not set to @code{YYEMPTY} or @code{YYEOF}.
Do not modify @code{yylval} in a deferred semantic action (@pxref{GLR Semantic
Actions}).
-@xref{Actions, ,Actions}.
+@xref{Actions}.
@end deffn
@deffn {Value} @@$
@@ -7640,7 +7609,7 @@ At this point, another reduction can be made, resulting
in the single value
The parser tries, by shifts and reductions, to reduce the entire input down
to a single grouping whose symbol is the grammar's start-symbol
-(@pxref{Language and Grammar, ,Languages and Context-Free Grammars}).
+(@pxref{Language and Grammar}).
This kind of parser is known in the literature as a bottom-up parser.
@@ -7716,7 +7685,7 @@ doing so would produce on the stack the sequence of
symbols @code{expr
The lookahead token is stored in the variable @code{yychar}.
Its semantic value and location, if any, are stored in the variables
@code{yylval} and @code{yylloc}.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
@node Shift/Reduce
@section Shift/Reduce Conflicts
@@ -7787,12 +7756,11 @@ conflicts, you can use the @code{%expect @var{n}}
declaration.
There will be no warning as long as the number of shift/reduce conflicts
is exactly @var{n}, and Bison will report an error if there is a
different number.
-@xref{Expect Decl, ,Suppressing Conflict Warnings}. However, we don't
+@xref{Expect Decl}. However, we don't
recommend the use of @code{%expect} (except @samp{%expect 0}!), as an equal
number of conflicts does not mean that they are the @emph{same}. When
possible, you should rather use precedence directives to @emph{fix} the
-conflicts explicitly (@pxref{Non Operators,, Using Precedence For Non
-Operators}).
+conflicts explicitly (@pxref{Non Operators}).
The definition of @code{if_stmt} above is solely to blame for the
conflict, but the conflict does not actually appear without additional
@@ -7929,10 +7897,9 @@ conflict, precedence suffices. In such a case, using
@code{%left},
@code{%right}, or @code{%nonassoc} might hide future (associativity
related) conflicts that would remain hidden.
-The dangling @code{else} ambiguity (@pxref{Shift/Reduce, , Shift/Reduce
-Conflicts}) can be solved explicitly. This shift/reduce conflicts occurs
-in the following situation, where the period denotes the current parsing
-state:
+The dangling @code{else} ambiguity (@pxref{Shift/Reduce}) can be solved
+explicitly. This shift/reduce conflicts occurs in the following situation,
+where the period denotes the current parsing state:
@example
if @var{e1} then if @var{e2} then @var{s1} . else @var{s2}
@@ -7951,12 +7918,11 @@ in an associativity related conflict, which can be
specified as follows.
%precedence ELSE
@end example
-The unary-minus is another typical example where associativity is
-usually over-specified, see @ref{Infix Calc, , Infix Notation
-Calculator - @code{calc}}. The @code{%left} directive is traditionally
-used to declare the precedence of @code{NEG}, which is more than needed
-since it also defines its associativity. While this is harmless in the
-traditional example, who knows how @code{NEG} might be used in future
+The unary-minus is another typical example where associativity is usually
+over-specified, see @ref{Infix Calc}. The @code{%left} directive is
+traditionally used to declare the precedence of @code{NEG}, which is more
+than needed since it also defines its associativity. While this is harmless
+in the traditional example, who knows how @code{NEG} might be used in future
evolutions of the grammar@dots{}
@node Precedence Examples
@@ -7988,7 +7954,7 @@ levels to the terminal symbols declared. The second
effect is to assign
precedence levels to certain rules: each rule gets its precedence from
the last terminal symbol mentioned in the components. (You can also
specify explicitly the precedence of a rule. @xref{Contextual
-Precedence, ,Context-Dependent Precedence}.)
+Precedence}.)
Finally, the resolution of conflicts works by comparing the precedence
of the rule being considered with that of the lookahead token. If the
@@ -7996,7 +7962,7 @@ token's precedence is higher, the choice is to shift. If
the rule's
precedence is higher, the choice is to reduce. If they have equal
precedence, the choice is made based on the associativity of that
precedence level. The verbose output file made by @samp{-v}
-(@pxref{Invocation, ,Invoking Bison}) says how each conflict was
+(@pxref{Invocation}) says how each conflict was
resolved.
Not all rules and not all tokens have precedence. If either the rule or
@@ -8007,8 +7973,8 @@ the lookahead token has no precedence, then the default
is to shift.
Using properly precedence and associativity directives can help fixing
shift/reduce conflicts that do not involve arithmetics-like operators. For
-instance, the ``dangling @code{else}'' problem (@pxref{Shift/Reduce, ,
-Shift/Reduce Conflicts}) can be solved elegantly in two different ways.
+instance, the ``dangling @code{else}'' problem (@pxref{Shift/Reduce}) can be
+solved elegantly in two different ways.
In the present case, the conflict is between the token @code{"else"} willing
to be shifted, and the rule @samp{if_stmt: "if" expr "then" stmt}, asking
@@ -8073,7 +8039,7 @@ and it is written after the components of the rule. Its
effect is to
assign the rule the precedence of @var{terminal-symbol}, overriding
the precedence that would be deduced for it in the ordinary way. The
altered rule precedence then affects how conflicts involving that rule
-are resolved (@pxref{Precedence, ,Operator Precedence}).
+are resolved (@pxref{Precedence}).
Here is how @code{%prec} solves the problem of unary minus. First, declare
a precedence for a fictitious terminal symbol named @code{UMINUS}. There
@@ -8297,7 +8263,7 @@ being tokens: @code{"word"} and @code{"redirect"}.
To prefer the longest @code{words}, the conflict between the token
@code{"word"} and the rule @samp{sequence: sequence words} must be resolved
as a shift. To this end, we use the same techniques as exposed above, see
-@ref{Non Operators,, Using Precedence For Non Operators}. One solution
+@ref{Non Operators}. One solution
relies on precedences: use @code{%prec} to give a lower precedence to the
rule:
@@ -8450,7 +8416,7 @@ return_spec:
@end example
For a more detailed exposition of LALR(1) parsers and parser
-generators, @pxref{Bibliography,,DeRemer 1982}.
+generators, @pxref{Bibliography}.
@node Tuning LR
@section Tuning LR
@@ -8531,7 +8497,7 @@ safely and completely eliminate the need to consider
LALR's shortcomings.
While IELR is almost always preferable, there are circumstances where LALR
or the canonical LR parser tables described by Knuth
-(@pxref{Bibliography,,Knuth 1965}) can be useful. Here we summarize the
+(@pxref{Bibliography}) can be useful. Here we summarize the
relative advantages of each parser table construction algorithm within
Bison:
@@ -8597,8 +8563,8 @@ default reductions. For details and a few caveats of
LAC, @pxref{LAC}.
@end itemize
For a more detailed exposition of the mysterious behavior in LALR parsers
-and the benefits of IELR, @pxref{Bibliography,,Denny 2008 March}, and
-@ref{Bibliography,,Denny 2010 November}.
+and the benefits of IELR, @pxref{Bibliography}, and
+@ref{Bibliography}.
@node Default Reductions
@subsection Default Reductions
@@ -8801,7 +8767,7 @@ has proved insignificant for practical grammars.
While the LAC algorithm shares techniques that have been recognized in the
parser community for years, for the publication that introduces LAC,
-@pxref{Bibliography,,Denny 2010 May}.
+@pxref{Bibliography}.
@node Unreachable States
@subsection Unreachable States
@@ -8925,8 +8891,7 @@ structure should generally be adequate. On LR(1)
portions of a
grammar, in particular, it is only slightly slower than with the
deterministic LR(1) Bison parser.
-For a more detailed exposition of GLR parsers, @pxref{Bibliography,,Scott
-2000}.
+For a more detailed exposition of GLR parsers, @pxref{Bibliography}.
@node Memory Management
@section Memory Management, and How to Avoid Memory Exhaustion
@@ -8942,7 +8907,7 @@ calls @code{yyerror} and then returns 2.
Because Bison parsers have growing stacks, hitting the upper limit
usually results from using a right recursion instead of a left
-recursion, see @ref{Recursion, ,Recursive Rules}.
+recursion, see @ref{Recursion}.
@vindex YYMAXDEPTH
By defining the macro @code{YYMAXDEPTH}, you can control how deep the
@@ -9031,18 +8996,18 @@ and subexpressions on the stack after the last
@code{stmts}, and there
will be tokens to read before the next newline. So the rule is not
applicable in the ordinary way.
-But Bison can force the situation to fit the rule, by discarding part of
-the semantic context and part of the input. First it discards states
-and objects from the stack until it gets back to a state in which the
+But Bison can force the situation to fit the rule, by discarding part of the
+semantic context and part of the input. First it discards states and
+objects from the stack until it gets back to a state in which the
@code{error} token is acceptable. (This means that the subexpressions
-already parsed are discarded, back to the last complete @code{stmts}.)
-At this point the @code{error} token can be shifted. Then, if the old
+already parsed are discarded, back to the last complete @code{stmts}.) At
+this point the @code{error} token can be shifted. Then, if the old
lookahead token is not acceptable to be shifted next, the parser reads
tokens and discards them until it finds a token which is acceptable. In
-this example, Bison reads and discards input until the next newline so
-that the fourth rule can apply. Note that discarded symbols are
-possible sources of memory leaks, see @ref{Destructor Decl, , Freeing
-Discarded Symbols}, for a means to reclaim this memory.
+this example, Bison reads and discards input until the next newline so that
+the fourth rule can apply. Note that discarded symbols are possible sources
+of memory leaks, see @ref{Destructor Decl}, for a means to reclaim this
+memory.
The choice of error rules in the grammar is a choice of strategies for
error recovery. A simple and useful strategy is simply to skip the rest of
@@ -9093,7 +9058,7 @@ The previous lookahead token is reanalyzed immediately
after an error. If
this is unacceptable, then the macro @code{yyclearin} may be used to clear
this token. Write the statement @samp{yyclearin;} in the error rule's
action.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
For example, suppose that on a syntax error, an error handling routine is
called that advances the input stream to some point where parsing should
@@ -9323,7 +9288,7 @@ clear the flag.
@chapter Debugging Your Parser
Developing a parser can be a challenge, especially if you don't understand
-the algorithm (@pxref{Algorithm, ,The Bison Parser Algorithm}). This
+the algorithm (@pxref{Algorithm}). This
chapter explains how to understand and debug a parser.
The first sections focus on the static part of the parser: its structure.
@@ -9331,19 +9296,18 @@ They explain how to generate and read the detailed
description of the
automaton. There are several formats available:
@itemize @minus
@item
-as text, see @ref{Understanding, , Understanding Your Parser};
+as text, see @ref{Understanding};
@item
-as a graph, see @ref{Graphviz,, Visualizing Your Parser};
+as a graph, see @ref{Graphviz};
@item
or as a markup report that can be turned, for instance, into HTML, see
-@ref{Xml,, Visualizing your parser in multiple formats}.
+@ref{Xml}.
@end itemize
The last section focuses on the dynamic part of the parser: how to enable
-and understand the parser run-time traces (@pxref{Tracing, ,Tracing Your
-Parser}).
+and understand the parser run-time traces (@pxref{Tracing}).
@menu
* Understanding:: Understanding the structure of your parser.
@@ -9355,18 +9319,18 @@ Parser}).
@node Understanding
@section Understanding Your Parser
-As documented elsewhere (@pxref{Algorithm, ,The Bison Parser Algorithm})
+As documented elsewhere (@pxref{Algorithm})
Bison parsers are @dfn{shift/reduce automata}. In some cases (much more
frequent than one would hope), looking at this automaton is required to
tune or simply fix a parser.
The textual file is generated when the options @option{--report} or
-@option{--verbose} are specified, see @ref{Invocation, , Invoking
-Bison}. Its name is made by removing @samp{.tab.c} or @samp{.c} from
-the parser implementation file name, and adding @samp{.output}
-instead. Therefore, if the grammar file is @file{foo.y}, then the
-parser implementation file is called @file{foo.tab.c} by default. As
-a consequence, the verbose output file is called @file{foo.output}.
+@option{--verbose} are specified, see @ref{Invocation}. Its name is made by
+removing @samp{.tab.c} or @samp{.c} from the parser implementation file
+name, and adding @samp{.output} instead. Therefore, if the grammar file is
+@file{foo.y}, then the parser implementation file is called @file{foo.tab.c}
+by default. As a consequence, the verbose output file is called
+@file{foo.output}.
The following grammar file, @file{calc.y}, will be used in the sequel:
@@ -9675,9 +9639,8 @@ NUM)}, which corresponds to shifting @samp{/}, or as
@samp{(NUM + NUM) /
NUM}, which corresponds to reducing rule 1.
Because in deterministic parsing a single decision can be made, Bison
-arbitrarily chose to disable the reduction, see @ref{Shift/Reduce, ,
-Shift/Reduce Conflicts}. Discarded actions are reported between
-square brackets.
+arbitrarily chose to disable the reduction, see @ref{Shift/Reduce}.
+Discarded actions are reported between square brackets.
Note that all the previous states had a single possible action: either
shifting the next token and going to the corresponding state, or
@@ -9783,7 +9746,7 @@ precedence of @samp{/} with respect to @samp{+},
@samp{-}, and @samp{*}, but
also because the associativity of @samp{/} is not specified.
Bison may also produce an HTML version of this output, via an XML file and
-XSLT processing (@pxref{Xml,,Visualizing your parser in multiple formats}).
+XSLT processing (@pxref{Xml}).
@c ================================================= Graphical Representation
@@ -9800,12 +9763,11 @@ fail due to memory exhaustion). This option was rather
designed for beginners,
to help them understand LR parsers.
This file is generated when the @option{--graph} option is specified
-(@pxref{Invocation, , Invoking Bison}). Its name is made by removing
+(@pxref{Invocation}). Its name is made by removing
@samp{.tab.c} or @samp{.c} from the parser implementation file name, and
adding @samp{.gv} instead. If the grammar file is @file{foo.y}, the
Graphviz output file is called @file{foo.gv}. A DOT file may also be
-produced via an XML file and XSLT processing (@pxref{Xml,,Visualizing your
-parser in multiple formats}).
+produced via an XML file and XSLT processing (@pxref{Xml}).
The following grammar file, @file{rr.y}, will be used in the sequel:
@@ -9824,8 +9786,8 @@ The graphical output
(see @ref{fig:graph})
@end ifnotinfo
is very similar to the textual one, and as such it is easier understood by
-making direct comparisons between them. @xref{Debugging, , Debugging Your
-Parser}, for a detailed analysis of the textual report.
+making direct comparisons between them. @xref{Debugging}, for a detailed
+analysis of the textual report.
@ifnotinfo
@float Figure,fig:graph
@@ -9893,7 +9855,7 @@ A Graphviz rendering of this portion of the graph could
be:
When unresolved conflicts are present, because in deterministic parsing
a single decision can be made, Bison can arbitrarily choose to disable a
-reduction, see @ref{Shift/Reduce, , Shift/Reduce Conflicts}. Discarded actions
+reduction, see @ref{Shift/Reduce}. Discarded actions
are distinguished by a red filling color on these nodes, just like how they are
reported between square brackets in the verbose file.
@@ -9912,9 +9874,9 @@ the name of the rule being jumped to.
@cindex xml
Bison supports two major report formats: textual output
-(@pxref{Understanding, ,Understanding Your Parser}) when invoked
+(@pxref{Understanding}) when invoked
with option @option{--verbose}, and DOT
-(@pxref{Graphviz,, Visualizing Your Parser}) when invoked with
+(@pxref{Graphviz}) when invoked with
option @option{--graph}. However,
another alternative is to output an XML file that may then be, with
@command{xsltproc}, rendered as either a raw text format equivalent to the
@@ -9924,7 +9886,7 @@ XSLT have no difference whatsoever with those obtained by
invoking
@command{bison} with options @option{--verbose} or @option{--graph}.
The XML file is generated when the options @option{-x} or
-@option{--xml[=FILE]} are specified, see @ref{Invocation,,Invoking Bison}.
+@option{--xml[=FILE]} are specified, see @ref{Invocation}.
If not specified, its name is made by removing @samp{.tab.c} or @samp{.c}
from the parser implementation file name, and adding @samp{.xml} instead.
For instance, if the grammar file is @file{foo.y}, the default XML output
@@ -9978,32 +9940,31 @@ decresing order of preference:
@item the variable @samp{parse.trace}
@findex %define parse.trace
Add the @samp{%define parse.trace} directive (@pxref{%define
-Summary,,parse.trace}), or pass the @option{-Dparse.trace} option
+Summary}), or pass the @option{-Dparse.trace} option
(@pxref{Tuning the Parser}). This is a Bison extension. Unless POSIX and
Yacc portability matter to you, this is the preferred solution.
@item the option @option{-t} (POSIX Yacc compliant)
@itemx the option @option{--debug} (Bison extension)
-Use the @samp{-t} option when you run Bison (@pxref{Invocation, ,Invoking
-Bison}). With @samp{%define api.prefix @{c@}}, it defines @code{CDEBUG} to
-1, otherwise it defines @code{YYDEBUG} to 1.
+Use the @samp{-t} option when you run Bison (@pxref{Invocation}). With
+@samp{%define api.prefix @{c@}}, it defines @code{CDEBUG} to 1, otherwise it
+defines @code{YYDEBUG} to 1.
@item the directive @samp{%debug} (deprecated)
@findex %debug
-Add the @code{%debug} directive (@pxref{Decl Summary, ,Bison Declaration
-Summary}). This Bison extension is maintained for backward compatibility
-with previous versions of Bison; use @code{%define parse.trace} instead.
+Add the @code{%debug} directive (@pxref{Decl Summary}). This Bison
+extension is maintained for backward compatibility with previous versions of
+Bison; use @code{%define parse.trace} instead.
@item the macro @code{YYDEBUG} (C/C++ only)
@findex YYDEBUG
Define the macro @code{YYDEBUG} to a nonzero value when you compile the
parser. This is compliant with POSIX Yacc. You could use
@samp{-DYYDEBUG=1} as a compiler option or you could put @samp{#define
-YYDEBUG 1} in the prologue of the grammar file (@pxref{Prologue, , The
-Prologue}).
+YYDEBUG 1} in the prologue of the grammar file (@pxref{Prologue}).
If the @code{%define} variable @code{api.prefix} is used (@pxref{Multiple
-Parsers, ,Multiple Parsers in the Same Program}), for instance @samp{%define
+Parsers}), for instance @samp{%define
api.prefix @{c@}}, then if @code{CDEBUG} is defined, its value controls the
tracing feature (enabled if and only if nonzero); otherwise tracing is
enabled if and only if @code{YYDEBUG} is nonzero.
@@ -10043,7 +10004,7 @@ the state stack afterward.
@end itemize
To make sense of this information, it helps to refer to the automaton
-description file (@pxref{Understanding, ,Understanding Your Parser}). This
+description file (@pxref{Understanding}). This
file shows the meaning of each state in terms of positions in various rules,
and also what each state will do with each possible input token. As you
read the successive trace messages, you can see that the parser is
@@ -10062,8 +10023,7 @@ variables show where in the grammar it is working.
The debugging information normally gives the token type of each token read,
but not its semantic value. The @code{%printer} directive allows specify
-how semantic values are reported, see @ref{Printer Decl, , Printing Semantic
-Values}.
+how semantic values are reported, see @ref{Printer Decl}.
As a demonstration of @code{%printer}, consider the multi-function
calculator, @code{mfcalc} (@pxref{Multi-function Calc}). To enable run-time
@@ -10244,7 +10204,7 @@ For @file{yacc.c} only. Obsoleted by @code{%printer}.
@end deffn
Here is an example of @code{YYPRINT} suitable for the multi-function
-calculator (@pxref{Mfcalc Declarations, ,Declarations for @code{mfcalc}}):
+calculator (@pxref{Mfcalc Declarations}):
@example
%@{
@@ -10265,7 +10225,7 @@ print_token_value (FILE *file, int type, YYSTYPE value)
@}
@end example
-@xref{Mfcalc Traces, ,Enabling Debug Traces for @code{mfcalc}}, for the
+@xref{Mfcalc Traces}, for the
proper use of @code{%printer}.
@c ================================================= Invoking Bison
@@ -10769,7 +10729,7 @@ Options changing the generated parsers.
@itemx --debug
In the parser implementation file, define the macro @code{YYDEBUG} to 1 if
it is not already defined, so that the debugging facilities are compiled.
-@xref{Tracing, ,Tracing Your Parser}.
+@xref{Tracing}.
@item -D @var{name}[=@var{value}]
@itemx --define=@var{name}[=@var{value}]
@@ -10808,9 +10768,8 @@ any conflicting @code{%define} that may be added to the
grammar file.
@item -L @var{language}
@itemx --language=@var{language}
Specify the programming language for the generated parser, as if
-@code{%language} was specified (@pxref{Decl Summary, , Bison Declaration
-Summary}). Currently supported languages include C, C++, and Java.
-@var{language} is case-insensitive.
+@code{%language} was specified (@pxref{Decl Summary}). Currently supported
+languages include C, C++, and Java. @var{language} is case-insensitive.
@item --locations
Pretend that @code{%locations} was specified. @xref{Decl Summary}.
@@ -10819,7 +10778,7 @@ Pretend that @code{%locations} was specified.
@xref{Decl Summary}.
@itemx --name-prefix=@var{prefix}
Pretend that @code{%name-prefix "@var{prefix}"} was specified (@pxref{Decl
Summary}). Obsoleted by @option{-Dapi.prefix=@var{prefix}}. @xref{Multiple
-Parsers, ,Multiple Parsers in the Same Program}.
+Parsers}.
@item -l
@itemx --no-lines
@@ -10833,7 +10792,7 @@ treating it as an independent source file in its own
right.
@item -S @var{file}
@itemx --skeleton=@var{file}
Specify the skeleton to use, similar to @code{%skeleton}
-(@pxref{Decl Summary, , Bison Declaration Summary}).
+(@pxref{Decl Summary}).
@c You probably don't need this option unless you are developing Bison.
@c You should use @option{--language} if you want to specify the skeleton for a
@@ -11249,14 +11208,14 @@ When run, @command{bison} will create several
entities in the @samp{yy}
namespace.
@findex %define api.namespace
Use the @samp{%define api.namespace} directive to change the namespace name,
-see @ref{%define Summary,,api.namespace}. The various classes are generated
+see @ref{%define Summary}. The various classes are generated
in the following files:
@table @file
@item @var{file}.hh
(Assuming the extension of the grammar file was @samp{.yy}.) The
declaration of the C++ parser class and auxiliary types. By default, this
-file is not generated (@pxref{Decl Summary, ,%defines}).
+file is not generated (@pxref{Decl Summary}).
@item @var{file}.cc
The implementation of the C++ parser class. The basename and extension of
@@ -11382,9 +11341,9 @@ based on variants.
@node C++ Unions
@subsubsection C++ Unions
-The @code{%union} directive works as for C, see @ref{Union Decl, ,The Union
-Declaration}. In particular it produces a genuine @code{union}, which have
-a few specific features in C++.
+The @code{%union} directive works as for C, see @ref{Union Decl}. In
+particular it produces a genuine @code{union}, which have a few specific
+features in C++.
@itemize @minus
@item
The type @code{YYSTYPE} is defined but its use is discouraged: rather
@@ -11398,8 +11357,7 @@ are allowed. C++11 relaxed this constraints, but at
the cost of safety.
Because objects have to be stored via pointers, memory is not
reclaimed automatically: using the @code{%destructor} directive is the
-only means to avoid leaks. @xref{Destructor Decl, , Freeing Discarded
-Symbols}.
+only means to avoid leaks. @xref{Destructor Decl}.
@node C++ Variants
@subsubsection C++ Variants
@@ -11409,10 +11367,9 @@ C++. This alleviates all the limitations reported in
the previous section,
and in particular, object types can be used without pointers.
To enable variant-based semantic values, set the @code{%define} variable
-@code{api.value.type} to @code{variant} (@pxref{%define Summary,,
-@code{api.value.type}}). Then @code{%union} is ignored; instead of using
-the name of the fields of the @code{%union} to ``type'' the symbols, use
-genuine types.
+@code{api.value.type} to @code{variant} (@pxref{%define Summary}). Then
+@code{%union} is ignored; instead of using the name of the fields of the
+@code{%union} to ``type'' the symbols, use genuine types.
For instance, instead of:
@@ -12188,7 +12145,7 @@ The token numbered as 0 corresponds to end of file; the
following line
allows for nicer error messages referring to ``end of file'' instead of
``$end''. Similarly user friendly names are provided for each symbol. To
avoid name clashes in the generated files (@pxref{Calc++ Scanner}), prefix
-tokens with @code{TOK_} (@pxref{%define Summary,,api.token.prefix}).
+tokens with @code{TOK_} (@pxref{%define Summary}).
@comment file: calc++/parser.yy
@example
@@ -12221,7 +12178,7 @@ tags.
No @code{%destructor} is needed to enable memory deallocation during error
recovery; the memory, for strings for instance, will be reclaimed by the
regular destructors. All the values are printed using their
-@code{operator<<} (@pxref{Printer Decl, , Printing Semantic Values}).
+@code{operator<<} (@pxref{Printer Decl}).
@comment file: calc++/parser.yy
@example
@@ -12229,8 +12186,7 @@ regular destructors. All the values are printed using
their
@end example
@noindent
-The grammar itself is straightforward (@pxref{Location Tracking Calc, ,
-Location Tracking Calculator - @code{ltcalc}}).
+The grammar itself is straightforward (@pxref{Location Tracking Calc}).
@comment file: calc++/parser.yy
@example
@@ -12923,7 +12879,7 @@ available only if location tracking is active.
Normally, Bison generates a pull parser for Java.
The following Bison declaration says that you want the parser to be a push
-parser (@pxref{%define Summary,,api.push-pull}):
+parser (@pxref{%define Summary}):
@example
%define api.push-pull push
@@ -12944,7 +12900,7 @@ The primary difference with respect to a pull parser is
that the parser
method @code{push_parse} is invoked repeatedly to parse each token. This
function is available if either the "%define api.push-pull push" or "%define
api.push-pull both" declaration is used (@pxref{%define
-Summary,,api.push-pull}). The @code{Location} and @code{Position}
+Summary}). The @code{Location} and @code{Position}
parameters are available only if location tracking is active.
The value returned by the @code{push_parse} method is one of the following
@@ -13230,7 +13186,7 @@ According to the author
@footnote{@url{https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00061.html}},
Yacc was first invented in 1971 and reached a form recognizably similar to
the C version in 1973. Johnson published @cite{A Portable Compiler: Theory
-and Practice} (@pxref{Bibliography,,Johnson 1978}).
+and Practice} (@pxref{Bibliography}).
Yacc was not itself originally written in C but in its predecessor language,
B. This goes far to explain its odd interface, which exposes a large number
@@ -13262,7 +13218,7 @@ became available a few years later.
@cindex byacc
Berkeley Yacc was originated in 1985 by Robert Corbett
-(@pxref{Bibliography,,Corbett 1984}). It was originally named ``zoo'', but
+(@pxref{Bibliography}). It was originally named ``zoo'', but
by October 1989 it became known as Berkeley Yacc or byacc.
Berkeley Yacc had three advantages over the ancestral Yacc: it generated
@@ -13270,7 +13226,7 @@ faster parsers, it could generate reentrant parsers,
and the source code
was released to the public domain rather than being under an AT&T
proprietary license. The better performance came from implementing
techniques from DeRemer and Penello's seminal paper on LALR parsing
-(@pxref{Bibliography,,DeRemer 1982}).
+(@pxref{Bibliography}).
Use of byacc spread rapidly due to its public domain license. However, once
Bison became available, byacc itself passed out of general use.
@@ -13301,9 +13257,9 @@ Bison error reporting has been improved in various
ways. Notably. ancestral
Yacc and Byson did not have carets in error messages.
Compared to Yacc Bison uses a faster but less space-efficient encoding for
-the parse tables (@pxref{Bibliography,,Corbett 1984}), and more modern
-techniques for generating the lookahead sets (@pxref{Bibliography,,DeRemer
-1982}). This approach is the standard one since then.
+the parse tables (@pxref{Bibliography}), and more modern techniques for
+generating the lookahead sets (@pxref{Bibliography}). This approach is the
+standard one since then.
(It has also been plausibly alleged the differences in the algorithms stem
mainly from the horrible kludges that Johnson had to perpetrate to make
@@ -13366,8 +13322,7 @@ My parser returns with error with a @samp{memory
exhausted}
message. What can I do?
@end quotation
-This question is already addressed elsewhere, see @ref{Recursion, ,Recursive
-Rules}.
+This question is already addressed elsewhere, see @ref{Recursion}.
@node How Can I Reset the Parser
@section How Can I Reset the Parser
@@ -13801,15 +13756,14 @@ In an action, the semantic value of a symbol
addressed by @var{name}.
@deffn {Delimiter} %%
Delimiter used to separate the grammar rule section from the
Bison declarations section or the epilogue.
-@xref{Grammar Layout, ,The Overall Layout of a Bison Grammar}.
+@xref{Grammar Layout}.
@end deffn
@c Don't insert spaces, or check the DVI output.
@deffn {Delimiter} %@{@var{code}%@}
All code listed between @samp{%@{} and @samp{%@}} is copied verbatim
to the parser implementation file. Such code forms the prologue of
-the grammar file. @xref{Grammar Outline, ,Outline of a Bison
-Grammar}.
+the grammar file. @xref{Grammar Outline}.
@end deffn
@deffn {Directive} %?@{@var{expression}@}
@@ -13827,37 +13781,36 @@ Comments, as in C/C++.
@end deffn
@deffn {Delimiter} :
-Separates a rule's result from its components. @xref{Rules, ,Syntax of
-Grammar Rules}.
+Separates a rule's result from its components. @xref{Rules}.
@end deffn
@deffn {Delimiter} ;
-Terminates a rule. @xref{Rules, ,Syntax of Grammar Rules}.
+Terminates a rule. @xref{Rules}.
@end deffn
@deffn {Delimiter} |
Separates alternate rules for the same result nonterminal.
-@xref{Rules, ,Syntax of Grammar Rules}.
+@xref{Rules}.
@end deffn
@deffn {Directive} <*>
Used to define a default tagged @code{%destructor} or default tagged
@code{%printer}.
-@xref{Destructor Decl, , Freeing Discarded Symbols}.
+@xref{Destructor Decl}.
@end deffn
@deffn {Directive} <>
Used to define a default tagless @code{%destructor} or default tagless
@code{%printer}.
-@xref{Destructor Decl, , Freeing Discarded Symbols}.
+@xref{Destructor Decl}.
@end deffn
@deffn {Symbol} $accept
The predefined nonterminal whose only rule is @samp{$accept: @var{start}
-$end}, where @var{start} is the start symbol. @xref{Start Decl, , The
-Start-Symbol}. It cannot be used in the grammar.
+$end}, where @var{start} is the start symbol. @xref{Start Decl}. It cannot
+be used in the grammar.
@end deffn
@deffn {Directive} %code @{@var{code}@}
@@ -13874,8 +13827,7 @@ Equip the parser for debugging. @xref{Decl Summary}.
@ifset defaultprec
@deffn {Directive} %default-prec
Assign a precedence to rules that lack an explicit @samp{%prec}
-modifier. @xref{Contextual Precedence, ,Context-Dependent
-Precedence}.
+modifier. @xref{Contextual Precedence}.
@end deffn
@end ifset
@@ -13898,13 +13850,12 @@ Same as above, but save in the file
@var{defines-file}.
@deffn {Directive} %destructor
Specify how the parser should reclaim the memory associated to
-discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}.
+discarded symbols. @xref{Destructor Decl}.
@end deffn
@deffn {Directive} %dprec
Bison declaration to assign a precedence to a rule that is used at parse
-time to resolve reduce/reduce conflicts. @xref{GLR Parsers, ,Writing
-GLR Parsers}.
+time to resolve reduce/reduce conflicts. @xref{GLR Parsers}.
@end deffn
@deffn {Directive} %empty
@@ -13940,11 +13891,11 @@ Summary}.
@deffn {Directive} %glr-parser
Bison declaration to produce a GLR parser. @xref{GLR
-Parsers, ,Writing GLR Parsers}.
+Parsers}.
@end deffn
@deffn {Directive} %initial-action
-Run user code before parsing. @xref{Initial Action Decl, , Performing Actions
before Parsing}.
+Run user code before parsing. @xref{Initial Action Decl}.
@end deffn
@deffn {Directive} %language
@@ -13954,25 +13905,24 @@ Specify the programming language for the generated
parser.
@deffn {Directive} %left
Bison declaration to assign precedence and left associativity to token(s).
-@xref{Precedence Decl, ,Operator Precedence}.
+@xref{Precedence Decl}.
@end deffn
@deffn {Directive} %lex-param @{@var{argument-declaration}@} @dots{}
Bison declaration to specifying additional arguments that
-@code{yylex} should accept. @xref{Pure Calling,, Calling Conventions
-for Pure Parsers}.
+@code{yylex} should accept. @xref{Pure Calling}.
@end deffn
@deffn {Directive} %merge
Bison declaration to assign a merging function to a rule. If there is a
reduce/reduce conflict with a rule having the same merging function, the
function is applied to the two semantic values to get a single result.
-@xref{GLR Parsers, ,Writing GLR Parsers}.
+@xref{GLR Parsers}.
@end deffn
@deffn {Directive} %name-prefix "@var{prefix}"
Obsoleted by the @code{%define} variable @code{api.prefix} (@pxref{Multiple
-Parsers, ,Multiple Parsers in the Same Program}).
+Parsers}).
Rename the external symbols (variables and functions) used in the parser so
that they start with @var{prefix} instead of @samp{yy}. Contrary to
@@ -13992,8 +13942,7 @@ example, if you use @samp{%name-prefix "c_"}, the names
become
@ifset defaultprec
@deffn {Directive} %no-default-prec
Do not assign a precedence to rules that lack an explicit @samp{%prec}
-modifier. @xref{Contextual Precedence, ,Context-Dependent
-Precedence}.
+modifier. @xref{Contextual Precedence}.
@end deffn
@end ifset
@@ -14004,12 +13953,11 @@ parser implementation file. @xref{Decl Summary}.
@deffn {Directive} %nonassoc
Bison declaration to assign precedence and nonassociativity to token(s).
-@xref{Precedence Decl, ,Operator Precedence}.
+@xref{Precedence Decl}.
@end deffn
@deffn {Directive} %nterm
-Bison declaration to declare nonterminals. @xref{Type Decl, ,Nonterminal
-Symbols}.
+Bison declaration to declare nonterminals. @xref{Type Decl}.
@end deffn
@deffn {Directive} %output "@var{file}"
@@ -14019,39 +13967,37 @@ Bison declaration to set the name of the parser
implementation file.
@deffn {Directive} %param @{@var{argument-declaration}@} @dots{}
Bison declaration to specify additional arguments that both
-@code{yylex} and @code{yyparse} should accept. @xref{Parser Function,, The
-Parser Function @code{yyparse}}.
+@code{yylex} and @code{yyparse} should accept. @xref{Parser Function}.
@end deffn
@deffn {Directive} %parse-param @{@var{argument-declaration}@} @dots{}
Bison declaration to specify additional arguments that @code{yyparse}
-should accept. @xref{Parser Function,, The Parser Function @code{yyparse}}.
+should accept. @xref{Parser Function}.
@end deffn
@deffn {Directive} %prec
Bison declaration to assign a precedence to a specific rule.
-@xref{Contextual Precedence, ,Context-Dependent Precedence}.
+@xref{Contextual Precedence}.
@end deffn
@deffn {Directive} %precedence
Bison declaration to assign precedence to token(s), but no associativity
-@xref{Precedence Decl, ,Operator Precedence}.
+@xref{Precedence Decl}.
@end deffn
@deffn {Directive} %pure-parser
Deprecated version of @samp{%define api.pure} (@pxref{%define
-Summary,,api.pure}), for which Bison is more careful to warn about
+Summary}), for which Bison is more careful to warn about
unreasonable usage.
@end deffn
@deffn {Directive} %require "@var{version}"
-Require version @var{version} or higher of Bison. @xref{Require Decl, ,
-Require a Version of Bison}.
+Require version @var{version} or higher of Bison. @xref{Require Decl}.
@end deffn
@deffn {Directive} %right
Bison declaration to assign precedence and right associativity to token(s).
-@xref{Precedence Decl, ,Operator Precedence}.
+@xref{Precedence Decl}.
@end deffn
@deffn {Directive} %skeleton
@@ -14060,13 +14006,12 @@ Specify the skeleton to use; usually for development.
@end deffn
@deffn {Directive} %start
-Bison declaration to specify the start symbol. @xref{Start Decl, ,The
-Start-Symbol}.
+Bison declaration to specify the start symbol. @xref{Start Decl}.
@end deffn
@deffn {Directive} %token
Bison declaration to declare token(s) without specifying precedence.
-@xref{Token Decl, ,Token Type Names}.
+@xref{Token Decl}.
@end deffn
@deffn {Directive} %token-table
@@ -14087,14 +14032,13 @@ The predefined token onto which all undefined values
returned by
@deffn {Directive} %union
Bison declaration to specify several possible data types for semantic
-values. @xref{Union Decl, ,The Union Declaration}.
+values. @xref{Union Decl}.
@end deffn
@deffn {Macro} YYABORT
Macro to pretend that an unrecoverable syntax error has occurred, by
making @code{yyparse} return 1 immediately. The error reporting
-function @code{yyerror} is not called. @xref{Parser Function, ,The
-Parser Function @code{yyparse}}.
+function @code{yyerror} is not called. @xref{Parser Function}.
For Java parsers, this functionality is invoked using @code{return YYABORT;}
instead.
@@ -14103,7 +14047,7 @@ instead.
@deffn {Macro} YYACCEPT
Macro to pretend that a complete utterance of the language has been
read, by making @code{yyparse} return 0 immediately.
-@xref{Parser Function, ,The Parser Function @code{yyparse}}.
+@xref{Parser Function}.
For Java parsers, this functionality is invoked using @code{return YYACCEPT;}
instead.
@@ -14111,14 +14055,14 @@ instead.
@deffn {Macro} YYBACKUP
Macro to discard a value from the parser stack and fake a lookahead
-token. @xref{Action Features, ,Special Features for Use in Actions}.
+token. @xref{Action Features}.
@end deffn
@deffn {Variable} yychar
External integer variable that contains the integer value of the
lookahead token. (In a pure parser, it is a local variable within
@code{yyparse}.) Error-recovery rule actions may examine this variable.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
@end deffn
@deffn {Variable} yyclearin
@@ -14134,7 +14078,7 @@ Macro to define to equip the parser with tracing code.
@xref{Tracing,
@deffn {Variable} yydebug
External integer variable set to zero by default. If @code{yydebug}
is given a nonzero value, the parser will output information on input
-symbols and parser action. @xref{Tracing, ,Tracing Your Parser}.
+symbols and parser action. @xref{Tracing}.
@end deffn
@deffn {Macro} yyerrok
@@ -14155,7 +14099,7 @@ instead.
@deffn {Function} yyerror
User-supplied function to be called by @code{yyparse} on error.
-@xref{Error Reporting, ,The Error Reporting Function @code{yyerror}}.
+@xref{Error Reporting}.
@end deffn
@deffn {Macro} YYFPRINTF
@@ -14170,8 +14114,7 @@ Macro for specifying the initial size of the parser
stack.
@deffn {Function} yylex
User-supplied lexical analyzer function, called with no arguments to get
-the next token. @xref{Lexical, ,The Lexical Analyzer Function
-@code{yylex}}.
+the next token. @xref{Lexical}.
@end deffn
@deffn {Variable} yylloc
@@ -14181,14 +14124,14 @@ variable within @code{yyparse}, and its address is
passed to
@code{yylex}.)
You can ignore this variable if you don't use the @samp{@@} feature in the
grammar actions.
-@xref{Token Locations, ,Textual Locations of Tokens}.
+@xref{Token Locations}.
In semantic actions, it stores the location of the lookahead token.
-@xref{Actions and Locations, ,Actions and Locations}.
+@xref{Actions and Locations}.
@end deffn
@deffn {Type} YYLTYPE
Data type of @code{yylloc}; by default, a structure with four
-members. @xref{Location Type, , Data Types of Locations}.
+members. @xref{Location Type}.
@end deffn
@deffn {Variable} yylval
@@ -14196,9 +14139,9 @@ External variable in which @code{yylex} should place
the semantic
value associated with a token. (In a pure parser, it is a local
variable within @code{yyparse}, and its address is passed to
@code{yylex}.)
-@xref{Token Values, ,Semantic Values of Tokens}.
+@xref{Token Values}.
In semantic actions, it stores the semantic value of the lookahead token.
-@xref{Actions, ,Actions}.
+@xref{Actions}.
@end deffn
@deffn {Macro} YYMAXDEPTH
@@ -14210,52 +14153,47 @@ Management}.
Global variable which Bison increments each time it reports a syntax error.
(In a pure parser, it is a local variable within @code{yyparse}. In a
pure push parser, it is a member of @code{yypstate}.)
-@xref{Error Reporting, ,The Error Reporting Function @code{yyerror}}.
+@xref{Error Reporting}.
@end deffn
@deffn {Function} yyparse
The parser function produced by Bison; call this function to start
-parsing. @xref{Parser Function, ,The Parser Function @code{yyparse}}.
+parsing. @xref{Parser Function}.
@end deffn
@deffn {Macro} YYPRINT
Macro used to output token semantic values. For @file{yacc.c} only.
-Deprecated, use @code{%printer} instead (@pxref{Printer Decl, , Printing
-Semantic Values}).
-@xref{The YYPRINT Macro, , The @code{YYPRINT} Macro}.
+Deprecated, use @code{%printer} instead (@pxref{Printer Decl}).
+@xref{The YYPRINT Macro}.
@end deffn
@deffn {Function} yypstate_delete
The function to delete a parser instance, produced by Bison in push mode;
call this function to delete the memory associated with a parser.
-@xref{Parser Delete Function, ,The Parser Delete Function
-@code{yypstate_delete}}. Does nothing when called with a null pointer.
+@xref{Parser Delete Function}. Does nothing when called with a null pointer.
@end deffn
@deffn {Function} yypstate_new
The function to create a parser instance, produced by Bison in push mode;
call this function to create a new parser.
-@xref{Parser Create Function, ,The Parser Create Function
-@code{yypstate_new}}.
+@xref{Parser Create Function}.
@end deffn
@deffn {Function} yypull_parse
The parser function produced by Bison in push mode; call this function to
parse the rest of the input stream.
-@xref{Pull Parser Function, ,The Pull Parser Function
-@code{yypull_parse}}.
+@xref{Pull Parser Function}.
@end deffn
@deffn {Function} yypush_parse
The parser function produced by Bison in push mode; call this function to
-parse a single token. @xref{Push Parser Function, ,The Push Parser Function
-@code{yypush_parse}}.
+parse a single token. @xref{Push Parser Function}.
@end deffn
@deffn {Macro} YYRECOVERING
The expression @code{YYRECOVERING ()} yields 1 when the parser
is recovering from a syntax error, and 0 otherwise.
-@xref{Action Features, ,Special Features for Use in Actions}.
+@xref{Action Features}.
@end deffn
@deffn {Macro} YYSTACK_USE_ALLOCA
@@ -14279,7 +14217,7 @@ require some expertise in low-level implementation
details.
@deffn {Type} YYSTYPE
Deprecated in favor of the @code{%define} variable @code{api.value.type}.
Data type of semantic values; @code{int} by default.
-@xref{Value Type, ,Data Types of Semantic Values}.
+@xref{Value Type}.
@end deffn
@node Glossary
@@ -14290,13 +14228,13 @@ Data type of semantic values; @code{int} by default.
@item Accepting state
A state whose only action is the accept action.
The accepting state is thus a consistent state.
-@xref{Understanding, ,Understanding Your Parser}.
+@xref{Understanding}.
@item Backus-Naur Form (BNF; also called ``Backus Normal Form'')
Formal method of specifying context-free grammars originally proposed
by John Backus, and slightly improved by Peter Naur in his 1960-01-02
committee document contributing to what became the Algol 60 report.
-@xref{Language and Grammar, ,Languages and Context-Free Grammars}.
+@xref{Language and Grammar}.
@item Consistent state
A state containing only one possible action. @xref{Default Reductions}.
@@ -14305,8 +14243,7 @@ A state containing only one possible action.
@xref{Default Reductions}.
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 @emph{anywhere} an expression is
-permitted. @xref{Language and Grammar, ,Languages and Context-Free
-Grammars}.
+permitted. @xref{Language and Grammar}.
@item Default reduction
The reduction that a parser should perform if the current parser state
@@ -14332,7 +14269,7 @@ 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. @xref{Algorithm, ,The Bison Parser Algorithm}.
+rules. @xref{Algorithm}.
@item Generalized LR (GLR)
A parsing algorithm that can handle all context-free grammars, including those
@@ -14340,13 +14277,12 @@ that are not LR(1). It resolves situations that
Bison's
deterministic parsing
algorithm cannot by effectively splitting off multiple parsers, trying all
possible parsers, and discarding those that fail in the light of additional
-right context. @xref{Generalized LR Parsing, ,Generalized
-LR Parsing}.
+right context. @xref{Generalized LR Parsing}.
@item Grouping
A language construct that is (in general) grammatically divisible;
for example, `expression' or `declaration' in C@.
-@xref{Language and Grammar, ,Languages and Context-Free Grammars}.
+@xref{Language and Grammar}.
@item IELR(1) (Inadequacy Elimination LR(1))
A minimal LR(1) parser table construction algorithm. That is, given any
@@ -14377,25 +14313,24 @@ syntax error message. @xref{LAC}.
@item Language construct
One of the typical usage schemas of the language. For example, one of
the constructs of the C language is the @code{if} statement.
-@xref{Language and Grammar, ,Languages and Context-Free Grammars}.
+@xref{Language and Grammar}.
@item Left associativity
Operators having left associativity are analyzed from left to right:
@samp{a+b+c} first computes @samp{a+b} and then combines with
-@samp{c}. @xref{Precedence, ,Operator Precedence}.
+@samp{c}. @xref{Precedence}.
@item Left recursion
A rule whose result symbol is also its first component symbol; for
-example, @samp{expseq1 : expseq1 ',' exp;}. @xref{Recursion, ,Recursive
-Rules}.
+example, @samp{expseq1 : expseq1 ',' exp;}. @xref{Recursion}.
@item Left-to-right parsing
Parsing a sentence of a language by analyzing it token by token from
-left to right. @xref{Algorithm, ,The Bison Parser Algorithm}.
+left to right. @xref{Algorithm}.
@item Lexical analyzer (scanner)
A function that reads an input stream and returns tokens one by one.
-@xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
+@xref{Lexical}.
@item Lexical tie-in
A flag, set by actions in the grammar rules, which alters the way
@@ -14405,8 +14340,7 @@ tokens are parsed. @xref{Lexical Tie-ins}.
A token which consists of two or more fixed characters. @xref{Symbols}.
@item Lookahead token
-A token already read but not yet shifted. @xref{Lookahead, ,Lookahead
-Tokens}.
+A token already read but not yet shifted. @xref{Lookahead}.
@item LALR(1)
The class of context-free grammars that Bison (like most other parser
@@ -14433,41 +14367,39 @@ performs some operation.
@item Reduction
Replacing a string of nonterminals and/or terminals with a single
-nonterminal, according to a grammar rule. @xref{Algorithm, ,The Bison
-Parser Algorithm}.
+nonterminal, according to a grammar rule. @xref{Algorithm}.
@item Reentrant
A reentrant subprogram is a subprogram which can be in invoked any
number of times in parallel, without interference between the various
-invocations. @xref{Pure Decl, ,A Pure (Reentrant) Parser}.
+invocations. @xref{Pure Decl}.
@item Reverse Polish Notation
A language in which all operators are postfix operators.
@item Right recursion
A rule whose result symbol is also its last component symbol; for
-example, @samp{expseq1: exp ',' expseq1;}. @xref{Recursion, ,Recursive
-Rules}.
+example, @samp{expseq1: exp ',' expseq1;}. @xref{Recursion}.
@item 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. @xref{Semantics, ,Defining Language Semantics}.
+each statement. @xref{Semantics}.
@item 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. @xref{Algorithm, ,The Bison Parser Algorithm}.
+already-recognized rule. @xref{Algorithm}.
@item Single-character literal
A single character that is recognized and interpreted as is.
-@xref{Grammar in Bison, ,From Formal Rules to Bison Input}.
+@xref{Grammar in Bison}.
@item 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.
-@xref{Start Decl, ,The Start-Symbol}.
+@xref{Start Decl}.
@item Symbol table
A data structure where symbol names and associated data are stored
@@ -14487,7 +14419,7 @@ the lexical analyzer. @xref{Symbols}.
@item 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.
-@xref{Language and Grammar, ,Languages and Context-Free Grammars}.
+@xref{Language and Grammar}.
@item Unreachable state
A parser state to which there does not exist a sequence of transitions from
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- doc: simplify uses of @ref,
Akim Demaille <=