]> granicus.if.org Git - flex/commitdiff
edited one more faq; used C-u C-c C-u C-a to update menus and nodes since the other...
authorWill Estes <wlestes@users.sourceforge.net>
Fri, 4 Oct 2002 12:36:16 +0000 (12:36 +0000)
committerWill Estes <wlestes@users.sourceforge.net>
Fri, 4 Oct 2002 12:36:16 +0000 (12:36 +0000)
flex.texi

index 84c1b567cbfdf76f111671d6031432960b064adf..70e03d810e8de25dcf053657a4b8421b2c75f52c 100644 (file)
--- a/flex.texi
+++ b/flex.texi
@@ -15,7 +15,7 @@
 @end direntry
 @c %**end of header
 
-@node Top
+@node Top, Copyright, (dir), (dir)
 @top flex
 
 This manual describes @code{flex}, a tool for generating programs that
@@ -67,12 +67,12 @@ Format of the Input File
 
 Scanner Options
 
-* Options for Specifing Filenames::
-* Options Affecting Scanner Behavior::
-* Code-Level And API Options::
-* Options for Scanner Speed and Size::
-* Debugging Options::
-* Miscellaneous Options::
+* Options for Specifing Filenames::  
+* Options Affecting Scanner Behavior::  
+* Code-Level And API Options::  
+* Options for Scanner Speed and Size::  
+* Debugging Options::           
+* Miscellaneous Options::       
 
 Reentrant C Scanners
 
@@ -100,9 +100,9 @@ Memory Management
 
 Serialized Tables
 
-* Creating Serialized Tables:: 
-* Loading and Unloading Serialized Tables:: 
-* Tables File Format:: 
+* Creating Serialized Tables::  
+* Loading and Unloading Serialized Tables::  
+* Tables File Format::          
 
 FAQ
 
@@ -143,7 +143,7 @@ FAQ
 * Why doesnt flex have non-greedy operators like perl does?::  
 * Memory leak - 16386 bytes allocated by malloc.::  
 * How do I track the byte offset for lseek()?::  
-* unnamed-faq-16::              
+* How do I use my own I/O classes in a C++ scanner?::  
 * How do I skip as many chars as possible?::  
 * unnamed-faq-33::              
 * unnamed-faq-42::              
@@ -209,7 +209,7 @@ FAQ
 Appendices
 
 * Makefiles and Flex::          
-* Bison Bridge::                  
+* Bison Bridge::                
 
 Indices
 
@@ -219,11 +219,12 @@ Indices
 * Index of Data Types::         
 * Index of Hooks::              
 * Index of Examples::           
+* Index of Scanner Options::    
 
 @end detailmenu
 @end menu
 
-@node Copyright
+@node Copyright, Reporting Bugs, Top, Top
 @chapter Copyright
 
 @cindex copyright of flex
@@ -266,7 +267,7 @@ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 PURPOSE.
 
-@node Reporting Bugs
+@node Reporting Bugs, Introduction, Copyright, Top
 @chapter Reporting Bugs
 
 @cindex bugs, reporting
@@ -276,7 +277,7 @@ If you have problems with @code{flex} or think you have found a bug,
 please send mail detailing your problem to
 @email{help-flex@@gnu.org}. Patches are always welcome.
 
-@node Introduction
+@node Introduction, Simple Examples, Reporting Bugs, Top
 @chapter Introduction
 
 @cindex scanner, definition of
@@ -292,7 +293,7 @@ produce an executable.  When the executable is run, it analyzes its
 input for occurrences of the regular expressions.  Whenever it finds
 one, it executes the corresponding C code.
 
-@node Simple Examples
+@node Simple Examples, Format, Introduction, Top
 @chapter Some Simple Examples
 
 First some simple examples to get the flavor of how one uses
@@ -415,7 +416,7 @@ seen.
 The details of this example will be explained in the following
 sections.
 
-@node Format
+@node Format, Patterns, Simple Examples, Top
 @chapter Format of the Input File
 
 
@@ -445,7 +446,7 @@ line containing only @samp{%%}.
 * Comments in the Input::       
 @end menu
 
-@node Definitions Section
+@node Definitions Section, Rules Section, Format, Format
 @section Format of the Definitions Section
 
 @cindex input file, Definitions section
@@ -515,7 +516,7 @@ is also copied verbatim to the output (with the %@{ and %@} symbols
 removed).  The %@{ and %@} symbols must appear unindented on lines by
 themselves.
 
-@node Rules Section
+@node Rules Section, User Code Section, Definitions Section, Format
 @section Format of the Rules Section
 
 @cindex input file, Rules Section
@@ -547,7 +548,7 @@ is copied verbatim to the output (with the %@{ and %@} symbols removed).
 The %@{ and %@} symbols must appear unindented on lines by themselves.
 
 @c proofread edit stopped here
-@node User Code Section
+@node User Code Section, Comments in the Input, Rules Section, Format
 @section Format of the User Code Section
 @cindex format, User Code Section
 @cindex sections, User Code Section
@@ -562,7 +563,7 @@ if it is missing, the second
 @samp{%%}
 in the input file may be skipped, too.
 
-@node Comments in the Input
+@node Comments in the Input,  , User Code Section, Format
 @section Comments in the Input
 @cindex comments, syntax
 
@@ -613,7 +614,7 @@ ruleD   ECHO;
 @end verbatim
 @end example
 
-@node Patterns
+@node Patterns, Matching, Format, Top
 @chapter Patterns
 @cindex Patterns
 
@@ -926,7 +927,7 @@ A similar trick will work for matching a foo or a
 bar-at-the-beginning-of-a-line.
 @end itemize
 
-@node Matching
+@node Matching, Actions, Patterns, Top
 @chapter How the Input Is Matched
 @cindex patterns, how the input is matched
 
@@ -1023,7 +1024,7 @@ much text being pushed back; instead, a run-time error results.
 Also note that you cannot use @code{%array} with C++ scanner classes
 (@pxref{Cxx}).
 
-@node Actions
+@node Actions, Generated Scanner, Matching, Top
 @chapter Actions
 @cindex actions, explanation
 
@@ -1362,7 +1363,7 @@ By default,
 is also called when an end-of-file is encountered.  It is a macro and
 may be redefined.
 
-@node Generated Scanner
+@node Generated Scanner, Start Conditions, Actions, Top
 @chapter The Generated Scanner
 
 @cindex yylex(), in generated scanner
@@ -1498,7 +1499,7 @@ by assigning it to some other
 @code{FILE}
 pointer.
 
-@node Start Conditions
+@node Start Conditions, Multiple Input Buffers, Generated Scanner, Top
 @chapter Start Conditions
 
 @cindex start conditions, explanation
@@ -1900,7 +1901,7 @@ limitation.  If memory is exhausted, program execution aborts.
 To use start condition stacks, your scanner must include a @code{%option
 stack} directive (@pxref{Scanner Options}).
 
-@node Multiple Input Buffers
+@node Multiple Input Buffers, EOF, Start Conditions, Top
 @chapter Multiple Input Buffers
 
 @cindex multiple input streams
@@ -2084,7 +2085,7 @@ is an integral type to which you can cast an integer expression
 reflecting the size of the buffer.
 @end deftp
 
-@node EOF
+@node EOF, Misc Macros, Multiple Input Buffers, Top
 @chapter End-of-File Rules
 
 @cindex EOF, explanation
@@ -2148,7 +2149,7 @@ example:
 @end verbatim
 @end example
 
-@node Misc Macros
+@node Misc Macros, User Values, EOF, Top
 @chapter Miscellaneous Macros
 
 @hkindex YY_USER_ACTION
@@ -2223,7 +2224,7 @@ being very careful that every rule ends with a @code{break}" or a
 where because a rule's action ends with @code{return}, the
 @code{YY_BREAK} is inaccessible.
 
-@node User Values
+@node User Values, Yacc, Misc Macros, Top
 @chapter Values Available To the User
 
 This chapter summarizes the various values available to the user in the
@@ -2290,7 +2291,7 @@ You can subsequently use this value with @code{BEGIN} to return to that
 start condition.
 @end table
 
-@node Yacc
+@node Yacc, Scanner Options, User Values, Top
 @chapter Interfacing with Yacc
 
 @cindex yacc, interface
@@ -2320,7 +2321,7 @@ is @code{TOK_NUMBER}, part of the scanner might look like:
 @end verbatim
 @end example
 
-@node Scanner Options
+@node Scanner Options, Performance, Yacc, Top
 @chapter Scanner Options
 
 @cindex command-line options
@@ -2331,12 +2332,12 @@ The various @code{flex} options are categorized by function in the following
 menu. If you want to lookup a particular option by name, @xref{Index of Scanner Options}.
 
 @menu
-* Options for Specifing Filenames::
-* Options Affecting Scanner Behavior::
-* Code-Level And API Options::
-* Options for Scanner Speed and Size::
-* Debugging Options::
-* Miscellaneous Options::
+* Options for Specifing Filenames::  
+* Options Affecting Scanner Behavior::  
+* Code-Level And API Options::  
+* Options for Scanner Speed and Size::  
+* Debugging Options::           
+* Miscellaneous Options::       
 @end menu
 
 Even though there are many scanner options, a typical scanner might only
@@ -2397,7 +2398,7 @@ corresponding routine not appearing in the generated scanner:
 (though @code{yy_push_state()} and friends won't appear anyway unless
 you use @code{%option stack)}.
 
-@node Options for Specifing Filenames
+@node Options for Specifing Filenames, Options Affecting Scanner Behavior, Scanner Options, Scanner Options
 @section Options for Specifing Filenames
 
 @table @samp
@@ -2470,7 +2471,7 @@ the serialized tables match the in-code tables, instead of loading them.
 
 @end table
 
-@node Options Affecting Scanner Behavior
+@node Options Affecting Scanner Behavior, Code-Level And API Options, Options for Specifing Filenames, Scanner Options
 @section Options Affecting Scanner Behavior
 
 @table @samp
@@ -2695,7 +2696,7 @@ calls @code{yylex()} again).
 
 @end table
 
-@node Code-Level And API Options
+@node Code-Level And API Options, Options for Scanner Speed and Size, Options Affecting Scanner Behavior, Scanner Options
 @section Code-Level And API Options
 
 @table @samp
@@ -2884,7 +2885,7 @@ called.  @xref{Cxx}.
 
 @end table
 
-@node Options for Scanner Speed and Size
+@node Options for Scanner Speed and Size, Debugging Options, Code-Level And API Options, Scanner Options
 @section Options for Scanner Speed and Size
 
 @table @samp
@@ -3046,7 +3047,7 @@ with @samp{--c++}.
 
 @end table
 
-@node Debugging Options
+@node Debugging Options, Miscellaneous Options, Options for Scanner Speed and Size, Scanner Options
 @section Debugging Options
 
 @table @samp
@@ -3166,7 +3167,7 @@ We recommend using this option always.
 
 @end table
 
-@node Miscellaneous Options
+@node Miscellaneous Options,  , Debugging Options, Scanner Options
 @section Miscellaneous Options
 
 @table @samp
@@ -3194,7 +3195,7 @@ prints the version number to @file{stdout} and exits.
 @end table
 
 
-@node Performance
+@node Performance, Cxx, Scanner Options, Top
 @chapter Performance Considerations
 
 @cindex performance, considerations
@@ -3555,7 +3556,7 @@ you should attempt to match ``large'' quantities of text but not
 ``huge'' quantities, where the cutoff between the two is at about 8K
 characters per token.
 
-@node Cxx
+@node Cxx, Reentrant, Performance, Top
 @chapter Generating C++ Scanners
 
 @cindex c++, experimental form of scanner class
@@ -3788,7 +3789,7 @@ first renaming @code{yyFlexLexer} as follows:
 if, for example, you used @code{%option prefix="xx"} for one of your
 scanners and @code{%option prefix="zz"} for the other.
 
-@node Reentrant
+@node Reentrant, Lex and Posix, Cxx, Top
 @chapter Reentrant C Scanners
 
 @cindex reentrant, explanation
@@ -3807,7 +3808,7 @@ multi-threaded applications.  Any thread may create and execute a reentrant
 * Reentrant Functions::         
 @end menu
 
-@node Reentrant Uses
+@node Reentrant Uses, Reentrant Overview, Reentrant, Reentrant
 @section Uses for Reentrant Scanners
 
 However, there are other uses for a reentrant scanner.  For example, you
@@ -3865,7 +3866,7 @@ another instance of itself.
 @end verbatim
 @end example
 
-@node Reentrant Overview
+@node Reentrant Overview, Reentrant Example, Reentrant Uses, Reentrant
 @section An Overview of the Reentrant API
 
 @cindex reentrant, API explanation
@@ -3894,7 +3895,7 @@ Accessor methods (get/set functions) provide access to common
 User-specific data can be stored in @code{yyextra}.
 @end itemize
 
-@node Reentrant Example
+@node Reentrant Example, Reentrant Detail, Reentrant Overview, Reentrant
 @section Reentrant Example
 
 First, an example of a reentrant scanner:
@@ -3922,7 +3923,7 @@ First, an example of a reentrant scanner:
 @end verbatim
 @end example
 
-@node Reentrant Detail
+@node Reentrant Detail, Reentrant Functions, Reentrant Example, Reentrant
 @section The Reentrant API in Detail
 
 Here are the things you need to do or know to use the reentrant C API of
@@ -3938,7 +3939,7 @@ Here are the things you need to do or know to use the reentrant C API of
 * About yyscan_t::              
 @end menu
 
-@node Specify Reentrant
+@node Specify Reentrant, Extra Reentrant Argument, Reentrant Detail, Reentrant Detail
 @subsection Declaring a Scanner As Reentrant
 
  %option reentrant (--reentrant) must be specified.
@@ -3950,7 +3951,7 @@ complaining. You may explicitly specify @code{%option noreentrant}, if
 you do @emph{not} want a reentrant scanner, although it is not
 necessary. The default is to generate a non-reentrant scanner.
 
-@node Extra Reentrant Argument
+@node Extra Reentrant Argument, Global Replacement, Specify Reentrant, Reentrant Detail
 @subsection The Extra Argument
 
 @cindex reentrant, calling functions
@@ -3981,7 +3982,7 @@ see @ref{Reentrant Functions}. Note that preprocessor macros, such as
 @code{BEGIN}, @code{ECHO}, and @code{REJECT}, do not take this
 additional argument.
 
-@node Global Replacement
+@node Global Replacement, Init and Destroy Functions, Extra Reentrant Argument, Reentrant Detail
 @subsection Global Variables Replaced By Macros
 
 @cindex reentrant, accessing flex variables
@@ -4012,7 +4013,7 @@ other functions. You must use an accessor method, e.g.,
 @code{yyget_text},
 to accomplish this. (See below).
 
-@node Init and Destroy Functions
+@node Init and Destroy Functions, Accessor Methods, Global Replacement, Reentrant Detail
 @subsection Init and Destroy Functions
 
 @cindex memory, considerations for reentrant scanners
@@ -4083,7 +4084,7 @@ it when done:
 @end verbatim
 @end example
 
-@node Accessor Methods
+@node Accessor Methods, Extra Data, Init and Destroy Functions, Reentrant Detail
 @subsection Accessing Variables with Reentrant Scanners
 
 @cindex reentrant, accessor functions
@@ -4124,7 +4125,7 @@ The above code may be called from within an action like this:
 You may find that @code{%option header-file} is particularly useful for generating
 prototypes of all the accessor functions. @xref{option-header}.
 
-@node Extra Data
+@node Extra Data, About yyscan_t, Accessor Methods, Reentrant Detail
 @subsection Extra Data
 
 @cindex reentrant, extra data
@@ -4197,7 +4198,7 @@ defining @code{YY_EXTRA_TYPE} in section 1 of your scanner:
 @end example
 
 
-@node About yyscan_t
+@node About yyscan_t,  , Extra Data, Reentrant Detail
 @subsection About yyscan_t
 
 @tindex yyscan_t (reentrant only)
@@ -4214,7 +4215,7 @@ an internal structure. You should never access this value
 directly. In particular, you should never attempt to free it
 (use @code{yylex_destroy()} instead.)
 
-@node Reentrant Functions
+@node Reentrant Functions,  , Reentrant Detail, Reentrant
 @section Functions and Macros Available in Reentrant C Scanners
 
 The following Functions are available in a reentrant scanner:
@@ -4293,7 +4294,7 @@ symbol @code{YYLTYPE}.  Support for yylval relies on the type
 by @code{bison}, in a .h file, and are included in section 1 of the
 @code{flex} input.
 
-@node Lex and Posix
+@node Lex and Posix, Memory Management, Reentrant, Top
 @chapter Incompatibilities with Lex and Posix
 
 @cindex POSIX and lex
@@ -4527,7 +4528,7 @@ is (rather surprisingly) truncated to
 @code{flex} does not truncate the action.  Actions that are not enclosed
 in braces are simply terminated at the end of the line.
 
-@node Memory Management
+@node Memory Management, Serialized Tables, Lex and Posix, Top
 @chapter Memory Management
 
 @cindex memory management
@@ -4541,7 +4542,7 @@ override the default behavior.
 * A Note About yytext And Memory::  
 @end menu
 
-@node The Default Memory Management
+@node The Default Memory Management, Overriding The Default Memory Management, Memory Management, Memory Management
 @section The Default Memory Management
 
 Flex allocates dynamic memory during initialization, and once in a while from
@@ -4601,7 +4602,7 @@ you call yylex_init(). It is destroyed when the user calls yylex_destroy().
 @end table
 
 
-@node Overriding The Default Memory Management
+@node Overriding The Default Memory Management, A Note About yytext And Memory, The Default Memory Management, Memory Management
 @section Overriding The Default Memory Management
 
 @cindex yyalloc, overriding
@@ -4690,7 +4691,7 @@ void yyfree (void * ptr, void * yyscanner) {
 @end example
 
 
-@node A Note About yytext And Memory
+@node A Note About yytext And Memory,  , Overriding The Default Memory Management, Memory Management
 @section A Note About yytext And Memory
 
 @cindex yytext, memory considerations
@@ -4712,7 +4713,7 @@ To prevent memory leaks from strdup'd yytext, you will have to track the memory
 somehow. Our experience has shown that a garbage collection mechanism or a
 pooled memory mechanism will save you a lot of grief when writing parsers.
 
-@node Serialized Tables
+@node Serialized Tables, Diagnostics, Memory Management, Top
 @chapter Serialized Tables
 @cindex serialization
 @cindex memory, serialized tables
@@ -4730,12 +4731,12 @@ The serialization feature allows the tables to be loaded at runtime, before
 scanning begins. The tables may be discarded when scanning is finished.
 
 @menu
-* Creating Serialized Tables::
-* Loading and Unloading Serialized Tables::
-* Tables File Format::
+* Creating Serialized Tables::  
+* Loading and Unloading Serialized Tables::  
+* Tables File Format::          
 @end menu
 
-@node Creating Serialized Tables
+@node Creating Serialized Tables, Loading and Unloading Serialized Tables, Serialized Tables, Serialized Tables
 @section Creating Serialized Tables
 @cindex tables, creating serialized
 @cindex serialization of tables
@@ -4778,7 +4779,7 @@ together into @file{all.tables}, which we will distribute with our project. At
 runtime, we will open the file and tell flex to load the tables from it.  Flex
 will find the correct tables automatically. (See next section).
 
-@node Loading and Unloading Serialized Tables
+@node Loading and Unloading Serialized Tables, Tables File Format, Creating Serialized Tables, Serialized Tables
 @section Loading and Unloading Serialized Tables
 @cindex tables, loading and unloading
 @cindex loading tables at runtime
@@ -4816,7 +4817,7 @@ each scanner type) in a threaded program, before any thread calls @code{yylex}.
 After the tables are loaded, they are never written to, and no thread
 protection is required thereafter -- until you destroy them.
 
-@node Tables File Format
+@node Tables File Format,  , Loading and Unloading Serialized Tables, Serialized Tables
 @section Tables File Format
 @cindex tables, file format
 @cindex file format, serialized tables
@@ -4990,7 +4991,7 @@ Zero or more NULL bytes, padding the entire table to the next 64-bit boundary as
 calculated from the beginning of this table.
 @end table
 
-@node Diagnostics
+@node Diagnostics, Limitations, Serialized Tables, Top
 @chapter Diagnostics
 
 @cindex error reporting, diagnostic messages
@@ -5084,7 +5085,7 @@ conditions in a <> construct than exist (so you must have listed at
 least one of them twice).
 @end itemize
 
-@node Limitations
+@node Limitations, Bibliography, Diagnostics, Top
 @chapter Limitations
 
 @cindex limitations of flex
@@ -5129,7 +5130,7 @@ number of states if it does.  @code{REJECT} cannot be used with the
 
 The @code{flex} internal algorithms need documentation.
 
-@node Bibliography
+@node Bibliography, FAQ, Limitations, Top
 @chapter Additional Reading
 
 You may wish to read more about the following programs:
@@ -5154,7 +5155,7 @@ Techniques and Tools}, Addison-Wesley (1986).  Describes the
 pattern-matching techniques used by @code{flex} (deterministic finite
 automata).
 
-@node FAQ
+@node FAQ, Appendices, Bibliography, Top
 @unnumbered FAQ
 
 From time to time, the @code{flex} maintainer receives certain
@@ -5199,7 +5200,7 @@ publish them here.
 * Why doesnt flex have non-greedy operators like perl does?::  
 * Memory leak - 16386 bytes allocated by malloc.::  
 * How do I track the byte offset for lseek()?::  
-* unnamed-faq-16::              
+* How do I use my own I/O classes in a C++ scanner?::  
 * How do I skip as many chars as possible?::  
 * unnamed-faq-33::              
 * unnamed-faq-42::              
@@ -5263,7 +5264,7 @@ publish them here.
 * unnamed-faq-101::             
 @end menu
 
-@node  When was flex born?
+@node  When was flex born?, How do I expand \ escape sequences in C-style quoted strings?, FAQ, FAQ
 @unnumberedsec When was flex born?
 
 Vern Paxson took over
@@ -5271,7 +5272,7 @@ the @cite{Software Tools} lex project from Jef Poskanzer in 1982.  At that point
 was written in Ratfor.  Around 1987 or so, Paxson translated it into C, and
 a legend was born :-).
 
-@node How do I expand \ escape sequences in C-style quoted strings?
+@node How do I expand \ escape sequences in C-style quoted strings?, Why do flex scanners call fileno if it is not ANSI compatible?, When was flex born?, FAQ
 @unnumberedsec How do I expand \ escape sequences in C-style quoted strings?
 
 A key point when scanning quoted strings is that you cannot (easily) write
@@ -5290,7 +5291,7 @@ buffer.  A rule like the escape-matcher will append to the buffer the
 meaning of the escape sequence rather than the literal text in @code{yytext}.
 In this way, @code{yytext} does not need to be modified at all.
 
-@node  Why do flex scanners call fileno if it is not ANSI compatible?
+@node  Why do flex scanners call fileno if it is not ANSI compatible?, Does flex support recursive pattern definitions?, How do I expand \ escape sequences in C-style quoted strings?, FAQ
 @unnumberedsec Why do flex scanners call fileno if it is not ANSI compatible?
 
 Flex scanners call @code{fileno()} in order to get the file descriptor
@@ -5301,7 +5302,7 @@ If your system does not have @code{fileno()} support, to get rid of the
 call, you must specify one of @code{%option always-interactive} or
 @code{%option never-interactive}.
 
-@node  Does flex support recursive pattern definitions?
+@node  Does flex support recursive pattern definitions?, How do I skip huge chunks of input (tens of megabytes) while using flex?, Why do flex scanners call fileno if it is not ANSI compatible?, FAQ
 @unnumberedsec Does flex support recursive pattern definitions?
 
 e.g.,
@@ -5321,12 +5322,12 @@ expression that matches all strings containing the same number of '@{'s
 as '@}'s.  For more powerful pattern matching, you need a parser, such
 as @cite{GNU bison}.
 
-@node  How do I skip huge chunks of input (tens of megabytes) while using flex?
+@node  How do I skip huge chunks of input (tens of megabytes) while using flex?, Flex is not matching my patterns in the same order that I defined them., Does flex support recursive pattern definitions?, FAQ
 @unnumberedsec How do I skip huge chunks of input (tens of megabytes) while using flex?
 
 Use @code{fseek()} (or @code{lseek()}) to position yyin, then call @code{yyrestart()}.
 
-@node  Flex is not matching my patterns in the same order that I defined them.
+@node  Flex is not matching my patterns in the same order that I defined them., My actions are executing out of order or sometimes not at all., How do I skip huge chunks of input (tens of megabytes) while using flex?, FAQ
 @unnumberedsec Flex is not matching my patterns in the same order that I defined them.
 
 @code{flex} picks the
@@ -5360,7 +5361,7 @@ identifier rule, or by removing characters (such as @samp{_}) from the
 identifier rule so it no longer matches @samp{data_}.  (Of course, you might
 also not have the option of changing the input language.)
 
-@node  My actions are executing out of order or sometimes not at all.
+@node  My actions are executing out of order or sometimes not at all., How can I have multiple input sources feed into the same scanner at the same time?, Flex is not matching my patterns in the same order that I defined them., FAQ
 @unnumberedsec My actions are executing out of order or sometimes not at all.
 
 Most likely, you have (in error) placed the opening @samp{@{} of the action
@@ -5387,7 +5388,7 @@ as follows:
 @end verbatim
 @end example
 
-@node  How can I have multiple input sources feed into the same scanner at the same time?
+@node  How can I have multiple input sources feed into the same scanner at the same time?, Can I build nested parsers that work with the same input file?, My actions are executing out of order or sometimes not at all., FAQ
 @unnumberedsec How can I have multiple input sources feed into the same scanner at the same time?
 
 If @dots{}
@@ -5423,7 +5424,7 @@ available, it blocks until some input is available.)  I've used this technique i
 interpreter I wrote that both reads keyboard input using a @code{flex} scanner and
 IPC traffic from sockets, and it works fine.
 
-@node  Can I build nested parsers that work with the same input file?
+@node  Can I build nested parsers that work with the same input file?, How can I match text only at the end of a file?, How can I have multiple input sources feed into the same scanner at the same time?, FAQ
 @unnumberedsec Can I build nested parsers that work with the same input file?
 
 This is not going to work without some additional effort.  The reason is
@@ -5436,7 +5437,7 @@ that that approach is quite difficult.  Instead, the best solution is to
 combine all of your scanners into one large scanner, using a different
 exclusive start condition for each.
 
-@node  How can I match text only at the end of a file?
+@node  How can I match text only at the end of a file?, How can I make REJECT cascade across start condition boundaries?, Can I build nested parsers that work with the same input file?, FAQ
 @unnumberedsec How can I match text only at the end of a file?
 
 There is no way to write a rule which is ``match this text, but only if
@@ -5452,7 +5453,7 @@ real @code{EOF} next time it's called).  Then you could write:
 @end verbatim
 @end example
 
-@node  How can I make REJECT cascade across start condition boundaries?
+@node  How can I make REJECT cascade across start condition boundaries?, Why cant I use fast or full tables with interactive mode?, How can I match text only at the end of a file?, FAQ
 @unnumberedsec How can I make REJECT cascade across start condition boundaries?
 
 You can do this as follows.  Suppose you have a start condition @samp{A}, and
@@ -5480,7 +5481,7 @@ BEGIN(INITIAL);
 @end verbatim
 @end example
 
-@node  Why cant I use fast or full tables with interactive mode?
+@node  Why cant I use fast or full tables with interactive mode?, How much faster is -F or -f than -C?, How can I make REJECT cascade across start condition boundaries?, FAQ
 @unnumberedsec Why can't I use fast or full tables with interactive mode?
 
 One of the assumptions
@@ -5500,19 +5501,19 @@ of performance in this area to gain the corresponding flexibility.  There
 might be another reason, though, why fast scanners don't support the
 interactive option.
 
-@node  How much faster is -F or -f than -C?
+@node  How much faster is -F or -f than -C?, If I have a simple grammar cant I just parse it with flex?, Why cant I use fast or full tables with interactive mode?, FAQ
 @unnumberedsec How much faster is -F or -f than -C?
 
 Much faster (factor of 2-3).
 
-@node  If I have a simple grammar cant I just parse it with flex?
+@node  If I have a simple grammar cant I just parse it with flex?, Why doesnt yyrestart() set the start state back to INITIAL?, How much faster is -F or -f than -C?, FAQ
 @unnumberedsec If I have a simple grammar can't I just parse it with flex?
 
 Is your grammar recursive? That's almost always a sign that you're
 better off using a parser/scanner rather than just trying to use a scanner
 alone.
 
-@node  Why doesnt yyrestart() set the start state back to INITIAL?
+@node  Why doesnt yyrestart() set the start state back to INITIAL?, How can I match C-style comments?, If I have a simple grammar cant I just parse it with flex?, FAQ
 @unnumberedsec Why doesn't yyrestart() set the start state back to INITIAL?
 
 There are two reasons.  The first is that there might
@@ -5520,7 +5521,7 @@ be programs that rely on the start state not changing across file changes.
 The second is that beginning with @code{flex} version 2.4, use of @code{yyrestart()} is no longer required,
 so fixing the problem there doesn't solve the more general problem.
 
-@node  How can I match C-style comments?
+@node  How can I match C-style comments?, The period isnt working the way I expected., Why doesnt yyrestart() set the start state back to INITIAL?, FAQ
 @unnumberedsec How can I match C-style comments?
 
 You might be tempted to try something like this:
@@ -5563,7 +5564,7 @@ Here is one way which allows you to track line information:
 @end verbatim
 @end example
 
-@node  The period isnt working the way I expected.
+@node  The period isnt working the way I expected., Can I get the flex manual in another format?, How can I match C-style comments?, FAQ
 @unnumberedsec The '.' isn't working the way I expected.
 
 Here are some tips for using @samp{.}:
@@ -5589,14 +5590,14 @@ Beware that the regex @code{(.|\n)+} will match your entire input!
 Finally, if you want to match a literal @samp{.} (a period), then use @samp{[.]} or @samp{"."}
 @end itemize
 
-@node  Can I get the flex manual in another format?
+@node  Can I get the flex manual in another format?, Does there exist a "faster" NDFA->DFA algorithm?, The period isnt working the way I expected., FAQ
 @unnumberedsec Can I get the flex manual in another format?
 
 The @code{flex} source distribution  includes a texinfo manual. You are
 free to convert that texinfo into whatever format you desire. The
 @code{texinfo} package includes tools for conversion to a number of formats.
 
-@node  Does there exist a "faster" NDFA->DFA algorithm?
+@node  Does there exist a "faster" NDFA->DFA algorithm?, How does flex compile the DFA so quickly?, Can I get the flex manual in another format?, FAQ
 @unnumberedsec Does there exist a "faster" NDFA->DFA algorithm?
 
 There's no way around the potential exponential running time - it
@@ -5604,7 +5605,7 @@ can take you exponential time just to enumerate all of the DFA states.
 In practice, though, the running time is closer to linear, or sometimes
 quadratic.
 
-@node  How does flex compile the DFA so quickly?
+@node  How does flex compile the DFA so quickly?, How can I use more than 8192 rules?, Does there exist a "faster" NDFA->DFA algorithm?, FAQ
 @unnumberedsec How does flex compile the DFA so quickly?
 
 There are two big speed wins that @code{flex} uses:
@@ -5623,7 +5624,7 @@ whether a newly constructed DFA state is equivalent to a previously constructed
 state can be done very quickly, by first comparing hash values.
 @end enumerate
 
-@node  How can I use more than 8192 rules?
+@node  How can I use more than 8192 rules?, How do I abandon a file in the middle of a scan and switch to a new file?, How does flex compile the DFA so quickly?, FAQ
 @unnumberedsec How can I use more than 8192 rules?
 
 @code{Flex} is compiled with an upper limit of 8192 rules per scanner.
@@ -5661,13 +5662,13 @@ values built into it because a long time ago it was developed on a machine
 with 16-bit ints.  I've given this advice to others in the past but haven't
 heard back from them whether it worked okay or not...
 
-@node  How do I abandon a file in the middle of a scan and switch to a new file?
+@node  How do I abandon a file in the middle of a scan and switch to a new file?, How do I execute code only during initialization (only before the first scan)?, How can I use more than 8192 rules?, FAQ
 @unnumberedsec How do I abandon a file in the middle of a scan and switch to a new file?
 
 Just call @code{yyrestart(newfile)}. Be sure to reset the start state if you want a
 ``fresh start, since @code{yyrestart} does NOT reset the start state back to @code{INITIAL}.
 
-@node  How do I execute code only during initialization (only before the first scan)?
+@node  How do I execute code only during initialization (only before the first scan)?, How do I execute code at termination?, How do I abandon a file in the middle of a scan and switch to a new file?, FAQ
 @unnumberedsec How do I execute code only during initialization (only before the first scan)?
 
 You can specify an initial action by defining the macro @code{YY_USER_INIT} (though
@@ -5687,23 +5688,23 @@ did_init = 1;
 @end verbatim
 @end example
 
-@node  How do I execute code at termination?
+@node  How do I execute code at termination?, Where else can I find help?, How do I execute code only during initialization (only before the first scan)?, FAQ
 @unnumberedsec How do I execute code at termination?
 
 You can specify an action for the @code{<<EOF>>} rule.
 
-@node  Where else can I find help?
+@node  Where else can I find help?, Can I include comments in the "rules" section of the file?, How do I execute code at termination?, FAQ
 @unnumberedsec Where else can I find help?
 
 The @code{help-flex} email list is served by GNU. See @uref{http://www.gnu.org/} for
 details on how to subscribe or search the archives.
 
-@node  Can I include comments in the "rules" section of the file?
+@node  Can I include comments in the "rules" section of the file?, I get an error about undefined yywrap()., Where else can I find help?, FAQ
 @unnumberedsec Can I include comments in the "rules" section of the file?
 
 Yes, just about anywhere you want to. See the manual for the specific syntax.
 
-@node  I get an error about undefined yywrap().
+@node  I get an error about undefined yywrap()., How can I change the matching pattern at run time?, Can I include comments in the "rules" section of the file?, FAQ
 @unnumberedsec I get an error about undefined yywrap().
 
 You must supply a @code{yywrap()} function of your own, or link to @file{libfl.a}
@@ -5717,12 +5718,12 @@ You must supply a @code{yywrap()} function of your own, or link to @file{libfl.a
 
 in your source to say you don't want a @code{yywrap()} function.
 
-@node  How can I change the matching pattern at run time?
+@node  How can I change the matching pattern at run time?, How can I expand macros in the input?, I get an error about undefined yywrap()., FAQ
 @unnumberedsec How can I change the matching pattern at run time?
 
 You can't, it's compiled into a static table when flex builds the scanner.
 
-@node How can I expand macros in the input?
+@node How can I expand macros in the input?, How can I build a two-pass scanner?, How can I change the matching pattern at run time?, FAQ
 @unnumberedsec How can I expand macros in the input?
 
 The best way to approach this problem is at a higher level, e.g., in the parser.
@@ -5757,7 +5758,7 @@ yyterminate();
 You probably will want a stack of expansion buffers to allow nested macros.
 From the above though hopefully the idea is clear.
 
-@node How can I build a two-pass scanner?
+@node How can I build a two-pass scanner?, How do I match any string not matched in the preceding rules?, How can I expand macros in the input?, FAQ
 @unnumberedsec How can I build a two-pass scanner?
 
 One way to do it is to filter the first pass to a temporary file,
@@ -5772,7 +5773,7 @@ tree, but the performance hit for the latter is usually an order of magnitude
 smaller, since everything is already classified, in binary format, and
 residing in memory.
 
-@node How do I match any string not matched in the preceding rules?
+@node How do I match any string not matched in the preceding rules?, I am trying to port code from AT&T lex that uses yysptr and yysbuf., How can I build a two-pass scanner?, FAQ
 @unnumberedsec How do I match any string not matched in the preceding rules?
 
 One way to assign precedence, is to place the more specific rules first. If
@@ -5793,7 +5794,7 @@ same amount of text as the more specific rules, and in that case the
 @code{flex} scanner will pick the first rule listed in your scanner as the
 one to match.
 
-@node I am trying to port code from AT&T lex that uses yysptr and yysbuf.
+@node I am trying to port code from AT&T lex that uses yysptr and yysbuf., Is there a way to make flex treat NULL like a regular character?, How do I match any string not matched in the preceding rules?, FAQ
 @unnumberedsec I am trying to port code from AT&T lex that uses yysptr and yysbuf.
 
 Those are internal variables pointing into the AT&T scanner's input buffer.  I
@@ -5803,13 +5804,13 @@ what they're doing, and then replace @code{input()} with an appropriate definiti
 @code{YY_INPUT}.  You shouldn't need to (and must not) replace
 @code{flex}'s @code{unput()} function.
 
-@node Is there a way to make flex treat NULL like a regular character?
+@node Is there a way to make flex treat NULL like a regular character?, Whenever flex can not match the input it says "flex scanner jammed"., I am trying to port code from AT&T lex that uses yysptr and yysbuf., FAQ
 @unnumberedsec Is there a way to make flex treat NULL like a regular character?
 
 Yes, @samp{\0} and @samp{\x00} should both do the trick.  Perhaps you have an ancient
 version of @code{flex}.  The latest release is version @value{VERSION}.
 
-@node Whenever flex can not match the input it says "flex scanner jammed".
+@node Whenever flex can not match the input it says "flex scanner jammed"., Why doesnt flex have non-greedy operators like perl does?, Is there a way to make flex treat NULL like a regular character?, FAQ
 @unnumberedsec Whenever flex can not match the input it says "flex scanner jammed".
 
 You need to add a rule that matches the otherwise-unmatched text.
@@ -5827,7 +5828,7 @@ e.g.,
 
 See @code{%option default} for more information.
 
-@node Why doesnt flex have non-greedy operators like perl does?
+@node Why doesnt flex have non-greedy operators like perl does?, Memory leak - 16386 bytes allocated by malloc., Whenever flex can not match the input it says "flex scanner jammed"., FAQ
 @unnumberedsec Why doesn't flex have non-greedy operators like perl does?
 
 A DFA can do a non-greedy match by stopping
@@ -5849,7 +5850,7 @@ state), and perhaps @samp{(.|\n)} to get a single character within the chunk ...
 
 This approach also has much better error-reporting properties.
 
-@node Memory leak - 16386 bytes allocated by malloc.
+@node Memory leak - 16386 bytes allocated by malloc., How do I track the byte offset for lseek()?, Why doesnt flex have non-greedy operators like perl does?, FAQ
 @unnumberedsec Memory leak - 16386 bytes allocated by malloc.
 @anchor{faq-memory-leak}
 
@@ -5879,7 +5880,7 @@ yy_init = 1;
 Note: @code{yy_init} is an "internal variable", and hasn't been tested in this
 situation. It is possible that some other globals may need resetting as well.
 
-@node How do I track the byte offset for lseek()?
+@node How do I track the byte offset for lseek()?, How do I use my own I/O classes in a C++ scanner?, Memory leak - 16386 bytes allocated by malloc., FAQ
 @unnumberedsec How do I track the byte offset for lseek()?
 
 @example
@@ -5914,37 +5915,27 @@ example,
 (You need to be careful to update your bookkeeping if you use @code{yymore(}),
 @code{yyless()}, @code{unput()}, or @code{input()}.)
 
-@c faq edit stopped here
-@c TODO: Evaluate this faq.
-@node unnamed-faq-16
-@unnumberedsec unnamed-faq-16
-@example
-@verbatim
-To: steves@telebase.com
-Subject: Re: flex C++ question
-In-reply-to: Your message of Thu, 08 Dec 94 13:10:58 EST.
-Date: Wed, 14 Dec 94 16:40:47 PST
-From: Vern Paxson <vern>
+@node How do I use my own I/O classes in a C++ scanner?, How do I skip as many chars as possible?, How do I track the byte offset for lseek()?, FAQ
+@section How do I use my own I/O classes in a C++ scanner?
 
-> We'd like to override the provided LexerInput() and LexerOutput()
-> functions, but we'd like to *not* use iostreams.  Instead, we'd like
-> to use some of our own I/O classes.  Is this possible?
+When the flex C++ scanning class rewrite finally happens, then this sort of thing should become much easier.
 
-You can do this by passing the various functions nil iostream*'s, and then
+@cindex LexerOutput, overriding
+@cindex LexerInput, overriding
+@cindex overriding LexerOutput
+@cindex overriding LexerInput
+@cindex customizing I/O in C++ scanners
+@cindex C++ I/O, customizing
+You can do this by passing the various functions (such as @code{LexerInput()}
+and @code{LexerOutput()}) nil @code{iostream*}'s, and then
 dealing with your own I/O classes surreptitiously (i.e., stashing them in
 special member variables).  This works because the only assumption about
 the lexer regarding what's done with the iostream's is that they're
-ultimately passed to LexerInput and LexerOutput, which then do whatever
-necessary with them.
+ultimately passed to @code{LexerInput()} and @code{LexerOutput}, which then do whatever
+is necessary with them.
 
-When the flex C++ scanning class rewrite finally happens (no date for this
-in sight), then this sort of thing should become much easier.
-
-               Vern
-@end verbatim
-@end example
-
-@node How do I skip as many chars as possible?
+@c faq edit stopped here
+@node How do I skip as many chars as possible?, unnamed-faq-33, How do I use my own I/O classes in a C++ scanner?, FAQ
 @unnumberedsec How do I skip as many chars as possible?
 
 How do I skip as many chars as possible -- without interfering with the other
@@ -5987,7 +5978,7 @@ making it match "endskip" plus something else.  So for example:
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-33
+@node unnamed-faq-33, unnamed-faq-42, How do I skip as many chars as possible?, FAQ
 @unnumberedsec unnamed-faq-33
 @example
 @verbatim
@@ -6002,7 +5993,7 @@ a legend was born :-).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-42
+@node unnamed-faq-42, unnamed-faq-43, unnamed-faq-33, FAQ
 @unnumberedsec unnamed-faq-42
 @example
 @verbatim
@@ -6080,7 +6071,7 @@ the example in MISC/fastwc/.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-43
+@node unnamed-faq-43, unnamed-faq-44, unnamed-faq-42, FAQ
 @unnumberedsec unnamed-faq-43
 @example
 @verbatim
@@ -6133,7 +6124,7 @@ Adding a 0 or two after each should do the trick.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-44
+@node unnamed-faq-44, unnamed-faq-45, unnamed-faq-43, FAQ
 @unnumberedsec unnamed-faq-44
 @example
 @verbatim
@@ -6172,7 +6163,7 @@ ftp.ee.lbl.gov.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-45
+@node unnamed-faq-45, unnamed-faq-46, unnamed-faq-44, FAQ
 @unnumberedsec unnamed-faq-45
 @example
 @verbatim
@@ -6199,7 +6190,7 @@ won't happen for quite a while, unless someone else does it first.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-46
+@node unnamed-faq-46, unnamed-faq-47, unnamed-faq-45, FAQ
 @unnumberedsec unnamed-faq-46
 @example
 @verbatim
@@ -6255,7 +6246,7 @@ See above.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-47
+@node unnamed-faq-47, unnamed-faq-48, unnamed-faq-46, FAQ
 @unnumberedsec unnamed-faq-47
 @example
 @verbatim
@@ -6286,7 +6277,7 @@ The latest release is 2.5.4, by the way.  It fixes some bugs in 2.5.2 and
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-48
+@node unnamed-faq-48, unnamed-faq-49, unnamed-faq-47, FAQ
 @unnumberedsec unnamed-faq-48
 @example
 @verbatim
@@ -6327,7 +6318,7 @@ Let me know if you still have problems.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-49
+@node unnamed-faq-49, unnamed-faq-50, unnamed-faq-48, FAQ
 @unnumberedsec unnamed-faq-49
 @example
 @verbatim
@@ -6353,7 +6344,7 @@ encloses the definitions in parentheses.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-50
+@node unnamed-faq-50, unnamed-faq-51, unnamed-faq-49, FAQ
 @unnumberedsec unnamed-faq-50
 @example
 @verbatim
@@ -6390,7 +6381,7 @@ behavior by using the "-l" lex-compatibility flag, or "%option lex-compat".
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-51
+@node unnamed-faq-51, unnamed-faq-52, unnamed-faq-50, FAQ
 @unnumberedsec unnamed-faq-51
 @example
 @verbatim
@@ -6421,7 +6412,7 @@ so flex's matching will be correct.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-52
+@node unnamed-faq-52, unnamed-faq-53, unnamed-faq-51, FAQ
 @unnumberedsec unnamed-faq-52
 @example
 @verbatim
@@ -6462,7 +6453,7 @@ The latest release is 2.5.4, by the way, available from ftp.ee.lbl.gov.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-53
+@node unnamed-faq-53, unnamed-faq-54, unnamed-faq-52, FAQ
 @unnumberedsec unnamed-faq-53
 @example
 @verbatim
@@ -6488,7 +6479,7 @@ of ()'s except for the trailing context operator, '/'.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-54
+@node unnamed-faq-54, unnamed-faq-55, unnamed-faq-53, FAQ
 @unnumberedsec unnamed-faq-54
 @example
 @verbatim
@@ -6517,7 +6508,7 @@ for sure won't be for many months to come).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-55
+@node unnamed-faq-55, unnamed-faq-56, unnamed-faq-54, FAQ
 @unnumberedsec unnamed-faq-55
 @example
 @verbatim
@@ -6547,7 +6538,7 @@ variables, and then invokes yyFlexLexer::yylex() to do the regular scanning.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-56
+@node unnamed-faq-56, unnamed-faq-57, unnamed-faq-55, FAQ
 @unnumberedsec unnamed-faq-56
 @example
 @verbatim
@@ -6584,7 +6575,7 @@ it would confuse more people than it would enlighten.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-57
+@node unnamed-faq-57, unnamed-faq-58, unnamed-faq-56, FAQ
 @unnumberedsec unnamed-faq-57
 @example
 @verbatim
@@ -6617,7 +6608,7 @@ You can get 2.5.4 from ftp.ee.lbl.gov.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-58
+@node unnamed-faq-58, unnamed-faq-59, unnamed-faq-57, FAQ
 @unnumberedsec unnamed-faq-58
 @example
 @verbatim
@@ -6638,7 +6629,7 @@ Unfortunately, no, I don't.  You might try asking on comp.compilers.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-59
+@node unnamed-faq-59, unnamed-faq-60, unnamed-faq-58, FAQ
 @unnumberedsec unnamed-faq-59
 @example
 @verbatim
@@ -6671,7 +6662,7 @@ clean up the result (strip out the #line's).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-60
+@node unnamed-faq-60, unnamed-faq-61, unnamed-faq-59, FAQ
 @unnumberedsec unnamed-faq-60
 @example
 @verbatim
@@ -6690,7 +6681,7 @@ The flex sources have a grammar for (f)lex.  Dunno about yacc,
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-61
+@node unnamed-faq-61, unnamed-faq-62, unnamed-faq-60, FAQ
 @unnumberedsec unnamed-faq-61
 @example
 @verbatim
@@ -6714,7 +6705,7 @@ Solution: override LexerInput() with a version that returns whole buffers.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-62
+@node unnamed-faq-62, unnamed-faq-63, unnamed-faq-61, FAQ
 @unnumberedsec unnamed-faq-62
 @example
 @verbatim
@@ -6748,7 +6739,7 @@ and, if you get complaints about too many rules, make the following change too:
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-63
+@node unnamed-faq-63, unnamed-faq-64, unnamed-faq-62, FAQ
 @unnumberedsec unnamed-faq-63
 @example
 @verbatim
@@ -6781,7 +6772,7 @@ is derived from istream.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-64
+@node unnamed-faq-64, unnamed-faq-65, unnamed-faq-63, FAQ
 @unnumberedsec unnamed-faq-64
 @example
 @verbatim
@@ -6811,7 +6802,7 @@ start reading from the given file at its present location.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-65
+@node unnamed-faq-65, unnamed-faq-66, unnamed-faq-64, FAQ
 @unnumberedsec unnamed-faq-65
 @example
 @verbatim
@@ -6838,7 +6829,7 @@ corresponding routines/symbols.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-66
+@node unnamed-faq-66, unnamed-faq-67, unnamed-faq-65, FAQ
 @unnumberedsec unnamed-faq-66
 @example
 @verbatim
@@ -6869,7 +6860,7 @@ last POSIX draft I saw).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-67
+@node unnamed-faq-67, unnamed-faq-68, unnamed-faq-66, FAQ
 @unnumberedsec unnamed-faq-67
 @example
 @verbatim
@@ -6895,7 +6886,7 @@ I'm afraid I don't know what the problem might be.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-68
+@node unnamed-faq-68, unnamed-faq-69, unnamed-faq-67, FAQ
 @unnumberedsec unnamed-faq-68
 @example
 @verbatim
@@ -6923,7 +6914,7 @@ function (by deriving from yyFlexLexer).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-69
+@node unnamed-faq-69, unnamed-faq-70, unnamed-faq-68, FAQ
 @unnumberedsec unnamed-faq-69
 @example
 @verbatim
@@ -6946,7 +6937,7 @@ The latest flex release, by the way, is 2.5.4, available from ftp.ee.lbl.gov.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-70
+@node unnamed-faq-70, unnamed-faq-71, unnamed-faq-69, FAQ
 @unnumberedsec unnamed-faq-70
 @example
 @verbatim
@@ -6970,7 +6961,7 @@ do this by redefining YY_USER_ACTION, as described in the manual.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-71
+@node unnamed-faq-71, unnamed-faq-72, unnamed-faq-70, FAQ
 @unnumberedsec unnamed-faq-71
 @example
 @verbatim
@@ -7000,7 +6991,7 @@ like the above is much more pragmatic than waiting for a new feature.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-72
+@node unnamed-faq-72, unnamed-faq-73, unnamed-faq-71, FAQ
 @unnumberedsec unnamed-faq-72
 @example
 @verbatim
@@ -7036,7 +7027,7 @@ since flex will put "#define foo 1" in the generated scanner.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-73
+@node unnamed-faq-73, unnamed-faq-74, unnamed-faq-72, FAQ
 @unnumberedsec unnamed-faq-73
 @example
 @verbatim
@@ -7063,7 +7054,7 @@ Sorry for the less-than-happy news ...
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-74
+@node unnamed-faq-74, unnamed-faq-75, unnamed-faq-73, FAQ
 @unnumberedsec unnamed-faq-74
 @example
 @verbatim
@@ -7092,7 +7083,7 @@ So that's the first thing to look for.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-75
+@node unnamed-faq-75, unnamed-faq-76, unnamed-faq-74, FAQ
 @unnumberedsec unnamed-faq-75
 @example
 @verbatim
@@ -7131,7 +7122,7 @@ The C++ istream version, using -B, takes 3.8 seconds.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-76
+@node unnamed-faq-76, unnamed-faq-77, unnamed-faq-75, FAQ
 @unnumberedsec unnamed-faq-76
 @example
 @verbatim
@@ -7153,7 +7144,7 @@ for it and then print it out.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-77
+@node unnamed-faq-77, unnamed-faq-78, unnamed-faq-76, FAQ
 @unnumberedsec unnamed-faq-77
 @example
 @verbatim
@@ -7177,7 +7168,7 @@ scan that in order to find the end of the string.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-78
+@node unnamed-faq-78, unnamed-faq-79, unnamed-faq-77, FAQ
 @unnumberedsec unnamed-faq-78
 @example
 @verbatim
@@ -7210,7 +7201,7 @@ Derive your own subclass and make mylineno a member variable of it.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-79
+@node unnamed-faq-79, unnamed-faq-80, unnamed-faq-78, FAQ
 @unnumberedsec unnamed-faq-79
 @example
 @verbatim
@@ -7258,7 +7249,7 @@ absolutely must squeeze every last cycle out of your scanner.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-80
+@node unnamed-faq-80, unnamed-faq-81, unnamed-faq-79, FAQ
 @unnumberedsec unnamed-faq-80
 @example
 @verbatim
@@ -7290,7 +7281,7 @@ numerous other flex tweaks :-).
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-81
+@node unnamed-faq-81, unnamed-faq-82, unnamed-faq-80, FAQ
 @unnumberedsec unnamed-faq-81
 @example
 @verbatim
@@ -7346,7 +7337,7 @@ Institute for Semantic Information Processing, University of Osnabrueck, FRG
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-82
+@node unnamed-faq-82, unnamed-faq-83, unnamed-faq-81, FAQ
 @unnumberedsec unnamed-faq-82
 @example
 @verbatim
@@ -7375,7 +7366,7 @@ scan.c with a larger value for
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-83
+@node unnamed-faq-83, unnamed-faq-84, unnamed-faq-82, FAQ
 @unnumberedsec unnamed-faq-83
 @example
 @verbatim
@@ -7422,7 +7413,7 @@ Sorry for the less-than-completely-satisfactory answer.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-84
+@node unnamed-faq-84, unnamed-faq-85, unnamed-faq-83, FAQ
 @unnumberedsec unnamed-faq-84
 @example
 @verbatim
@@ -7449,7 +7440,7 @@ consume tokens in an attempt to get the parser into a consistent state.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-85
+@node unnamed-faq-85, unnamed-faq-86, unnamed-faq-84, FAQ
 @unnumberedsec unnamed-faq-85
 @example
 @verbatim
@@ -7483,7 +7474,7 @@ This is off the top of my head, not sure it'll work.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-86
+@node unnamed-faq-86, unnamed-faq-87, unnamed-faq-85, FAQ
 @unnumberedsec unnamed-faq-86
 @example
 @verbatim
@@ -7516,7 +7507,7 @@ to declare local variables.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-87
+@node unnamed-faq-87, unnamed-faq-88, unnamed-faq-86, FAQ
 @unnumberedsec unnamed-faq-87
 @example
 @verbatim
@@ -7537,7 +7528,7 @@ safely make it a lot lower if needed.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-88
+@node unnamed-faq-88, unnamed-faq-90, unnamed-faq-87, FAQ
 @unnumberedsec unnamed-faq-88
 @example
 @verbatim
@@ -7565,7 +7556,7 @@ recompile everything, and it should all work.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-90
+@node unnamed-faq-90, unnamed-faq-91, unnamed-faq-88, FAQ
 @unnumberedsec unnamed-faq-90
 @example
 @verbatim
@@ -7601,7 +7592,7 @@ running the risk of consuming the entire input stream, as noted above.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-91
+@node unnamed-faq-91, unnamed-faq-92, unnamed-faq-90, FAQ
 @unnumberedsec unnamed-faq-91
 @example
 @verbatim
@@ -7670,7 +7661,7 @@ Share what you know. Learn what you don't.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-92
+@node unnamed-faq-92, unnamed-faq-93, unnamed-faq-91, FAQ
 @unnumberedsec unnamed-faq-92
 @example
 @verbatim
@@ -7690,7 +7681,7 @@ Derive your own subclass from yyFlexLexer.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-93
+@node unnamed-faq-93, unnamed-faq-94, unnamed-faq-92, FAQ
 @unnumberedsec unnamed-faq-93
 @example
 @verbatim
@@ -7715,7 +7706,7 @@ to values at that time.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-94
+@node unnamed-faq-94, unnamed-faq-95, unnamed-faq-93, FAQ
 @unnumberedsec unnamed-faq-94
 @example
 @verbatim
@@ -7752,7 +7743,7 @@ very slowly, a character at a time.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-95
+@node unnamed-faq-95, unnamed-faq-96, unnamed-faq-94, FAQ
 @unnumberedsec unnamed-faq-95
 @example
 @verbatim
@@ -7794,7 +7785,7 @@ distribution from ftp.ee.lbl.gov.  (Or you can first try removing
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-96
+@node unnamed-faq-96, unnamed-faq-97, unnamed-faq-95, FAQ
 @unnumberedsec unnamed-faq-96
 @example
 @verbatim
@@ -7822,7 +7813,7 @@ your "make" is broken, in which case compile scan.c to scan.o by hand.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-97
+@node unnamed-faq-97, unnamed-faq-98, unnamed-faq-96, FAQ
 @unnumberedsec unnamed-faq-97
 @example
 @verbatim
@@ -7843,7 +7834,7 @@ scanner of the scanner (e.g., "scanner->yylex()").
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-98
+@node unnamed-faq-98, unnamed-faq-99, unnamed-faq-97, FAQ
 @unnumberedsec unnamed-faq-98
 @example
 @verbatim
@@ -7867,7 +7858,7 @@ For flex, you can probably do the equivalent using a switch on YYSTATE.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-99
+@node unnamed-faq-99, unnamed-faq-100, unnamed-faq-98, FAQ
 @unnumberedsec unnamed-faq-99
 @example
 @verbatim
@@ -7896,7 +7887,7 @@ See the file "COPYING" in the flex distribution for the legalese.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-100
+@node unnamed-faq-100, unnamed-faq-101, unnamed-faq-99, FAQ
 @unnumberedsec unnamed-faq-100
 @example
 @verbatim
@@ -7919,7 +7910,7 @@ allow recursion), it is a scanner that's confined to regular expressions.
 @end example
 
 @c TODO: Evaluate this faq.
-@node unnamed-faq-101
+@node unnamed-faq-101,  , unnamed-faq-100, FAQ
 @unnumberedsec unnamed-faq-101
 @example
 @verbatim
@@ -7949,7 +7940,7 @@ then the problem is that the last rule needs to be "{whitespace}" !
 @end verbatim
 @end example
 
-@node Appendices
+@node Appendices, Indices, FAQ, Top
 @appendix Appendices
 
 @menu
@@ -7957,7 +7948,7 @@ then the problem is that the last rule needs to be "{whitespace}" !
 * Bison Bridge::                
 @end menu
 
-@node Makefiles and Flex
+@node Makefiles and Flex, Bison Bridge, Appendices, Appendices
 @appendixsec Makefiles and Flex
 
 @cindex Makefile, syntax
@@ -8066,7 +8057,7 @@ with your specific implementation of @command{make}.
 For more details on writing Makefiles, see @ref{Top, , , make, The
 GNU Make Manual}.
 
-@node Bison Bridge
+@node Bison Bridge,  , Makefiles and Flex, Appendices
 @section C Scanners with Bison Parsers
 
 @cindex bison, bridging with flex
@@ -8177,7 +8168,7 @@ As you can see, there really is no magic here. We just use
 @end example
 
 
-@node Indices
+@node Indices,  , Appendices, Top
 @unnumbered Indices
 
 @menu
@@ -8187,10 +8178,10 @@ As you can see, there really is no magic here. We just use
 * Index of Data Types::         
 * Index of Hooks::              
 * Index of Examples::           
-* Index of Scanner Options::
+* Index of Scanner Options::    
 @end menu
 
-@node Concept Index
+@node Concept Index, Index of Functions and Macros, Indices, Indices
 @unnumberedsec Concept Index
 @cindex beginning of line -- see BOL
 @cindex ^ -- see BOL
@@ -8205,7 +8196,7 @@ As you can see, there really is no magic here. We just use
 @cindex bison, see also yacc
 @printindex cp
 
-@node Index of Functions and Macros
+@node Index of Functions and Macros, Index of Variables, Concept Index, Indices
 @unnumberedsec Index of Functions and Macros
 
 This is an index of functions and preprocessor macros that look like functions.
@@ -8213,7 +8204,7 @@ For macros that expand to variables or constants, see @ref{Index of Variables}.
 
 @printindex fn
 
-@node Index of Variables
+@node Index of Variables, Index of Data Types, Index of Functions and Macros, Indices
 @unnumberedsec Index of Variables
 
 This is an index of variables, constants, and preprocessor macros
@@ -8221,11 +8212,11 @@ that expand to variables or constants.
 
 @printindex vr
 
-@node Index of Data Types
+@node Index of Data Types, Index of Hooks, Index of Variables, Indices
 @unnumberedsec Index of Data Types
 @printindex tp
 
-@node Index of Hooks
+@node Index of Hooks, Index of Examples, Index of Data Types, Indices
 @unnumberedsec Index of Hooks
 
 This is an index of "hooks" that the user may define. These hooks typically  correspond
@@ -8233,11 +8224,11 @@ to specific locations in the generated scanner, and may be used to insert arbitr
 
 @printindex hk
 
-@node Index of Examples
+@node Index of Examples, Index of Scanner Options, Index of Hooks, Indices
 @unnumberedsec Index of Examples
 @printindex ex
 
-@node Index of Scanner Options
+@node Index of Scanner Options,  , Index of Examples, Indices
 @unnumberedsec Index of Scanner Options
 
 @printindex op