* How do I track the byte offset for lseek()?::
* 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::
-* unnamed-faq-43::
-* unnamed-faq-44::
-* unnamed-faq-45::
-* unnamed-faq-46::
-* unnamed-faq-47::
-* unnamed-faq-48::
-* unnamed-faq-49::
-* unnamed-faq-50::
-* unnamed-faq-51::
-* unnamed-faq-52::
+* deleteme00::
+* Are certain equivalent patterns faster than others?::
+* Is backing up a big deal?::
+* Can I fake multi-byte character support?::
+* deleteme01::
+* Can you discuss some flex internals?::
+* unput() messes up yy_at_bol::
+* The | operator is not doing what I want::
+* Why can't flex understand this variable trailing context pattern?::
+* The ^ operator isn't working::
+* Trailing context is getting confused with trailing optional patterns::
+* Is flex GNU or not?::
* unnamed-faq-53::
* unnamed-faq-54::
* unnamed-faq-55::
* How do I track the byte offset for lseek()?::
* 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::
-* unnamed-faq-43::
-* unnamed-faq-44::
-* unnamed-faq-45::
-* unnamed-faq-46::
-* unnamed-faq-47::
-* unnamed-faq-48::
-* unnamed-faq-49::
-* unnamed-faq-50::
-* unnamed-faq-51::
-* unnamed-faq-52::
+* deleteme00::
+* Are certain equivalent patterns faster than others?::
+* Is backing up a big deal?::
+* Can I fake multi-byte character support?::
+* deleteme01::
+* Can you discuss some flex internals?::
+* unput() messes up yy_at_bol::
+* The | operator is not doing what I want::
+* Why can't flex understand this variable trailing context pattern?::
+* The ^ operator isn't working::
+* Trailing context is getting confused with trailing optional patterns::
+* Is flex GNU or not?::
* unnamed-faq-53::
* unnamed-faq-54::
* unnamed-faq-55::
* unnamed-faq-101::
@end menu
-@node When was flex born?, How do I expand \ escape sequences in C-style quoted strings?, FAQ, FAQ
+@node When was flex born?
@unnumberedsec When was flex born?
Vern Paxson took over
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?, Why do flex scanners call fileno if it is not ANSI compatible?, When was flex born?, FAQ
+@node How do I expand \ escape sequences in C-style quoted strings?
@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
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?, Does flex support recursive pattern definitions?, How do I expand \ escape sequences in C-style quoted strings?, FAQ
+@node Why do flex scanners call fileno if it is not ANSI compatible?
@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
call, you must specify one of @code{%option always-interactive} or
@code{%option never-interactive}.
-@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
+@node Does flex support recursive pattern definitions?
@unnumberedsec Does flex support recursive pattern definitions?
e.g.,
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?, Flex is not matching my patterns in the same order that I defined them., Does flex support recursive pattern definitions?, FAQ
+@node How do I skip huge chunks of input (tens of megabytes) while using flex?
@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., 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
+@node Flex is not matching my patterns in the same order that I defined them.
@unnumberedsec Flex is not matching my patterns in the same order that I defined them.
@code{flex} picks 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., 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
+@node My actions are executing out of order or sometimes not at all.
@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
@end verbatim
@end example
-@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
+@node How can I have multiple input sources feed into the same scanner at the same time?
@unnumberedsec How can I have multiple input sources feed into the same scanner at the same time?
If @dots{}
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?, 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
+@node Can I build nested parsers that work with the same input file?
@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
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?, How can I make REJECT cascade across start condition boundaries?, Can I build nested parsers that work with the same input file?, FAQ
+@node How can I match text only at the end of a file?
@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
@end verbatim
@end example
-@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
+@node How can I make REJECT cascade across start condition boundaries?
@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
@end verbatim
@end example
-@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
+@node Why cant I use fast or full tables with interactive mode?
@unnumberedsec Why can't I use fast or full tables with interactive mode?
One of the assumptions
might be another reason, though, why fast scanners don't support the
interactive option.
-@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
+@node How much faster is -F or -f than -C?
@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?, Why doesnt yyrestart() set the start state back to INITIAL?, How much faster is -F or -f than -C?, FAQ
+@node If I have a simple grammar cant I just parse it with flex?
@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?, How can I match C-style comments?, If I have a simple grammar cant I just parse it with flex?, FAQ
+@node Why doesnt yyrestart() set the start state back to INITIAL?
@unnumberedsec Why doesn't yyrestart() set the start state back to INITIAL?
There are two reasons. The first is that there might
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?, The period isnt working the way I expected., Why doesnt yyrestart() set the start state back to INITIAL?, FAQ
+@node How can I match C-style comments?
@unnumberedsec How can I match C-style comments?
You might be tempted to try something like this:
@end verbatim
@end example
-@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
+@node The period isnt working the way I expected.
@unnumberedsec The '.' isn't working the way I expected.
Here are some tips for using @samp{.}:
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?, Does there exist a "faster" NDFA->DFA algorithm?, The period isnt working the way I expected., FAQ
+@node Can I get the flex manual in another format?
@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?, How does flex compile the DFA so quickly?, Can I get the flex manual in another format?, FAQ
+@node Does there exist a "faster" NDFA->DFA algorithm?
@unnumberedsec Does there exist a "faster" NDFA->DFA algorithm?
There's no way around the potential exponential running time - it
In practice, though, the running time is closer to linear, or sometimes
quadratic.
-@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
+@node How does flex compile the DFA so quickly?
@unnumberedsec How does flex compile the DFA so quickly?
There are two big speed wins that @code{flex} uses:
state can be done very quickly, by first comparing hash values.
@end enumerate
-@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
+@node How can I use more than 8192 rules?
@unnumberedsec How can I use more than 8192 rules?
@code{Flex} is compiled with an upper limit of 8192 rules per scanner.
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?, How do I execute code only during initialization (only before the first scan)?, How can I use more than 8192 rules?, FAQ
+@node How do I abandon a file in the middle of a scan and switch to a new file?
@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)?, 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
+@node How do I execute code only during initialization (only before the first scan)?
@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
@end verbatim
@end example
-@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
+@node How do I execute code at termination?
@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?, Can I include comments in the "rules" section of the file?, How do I execute code at termination?, FAQ
+@node Where else can I find help?
@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?, I get an error about undefined yywrap()., Where else can I find help?, FAQ
+@node Can I include comments in the "rules" section of the file?
@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()., How can I change the matching pattern at run time?, Can I include comments in the "rules" section of the file?, FAQ
+@node I get an error about undefined yywrap().
@unnumberedsec I get an error about undefined yywrap().
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?, How can I expand macros in the input?, I get an error about undefined yywrap()., FAQ
+@node How can I change the matching pattern at run time?
@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?, How can I build a two-pass scanner?, How can I change the matching pattern at run time?, FAQ
+@node How can I expand macros in the input?
@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.
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?, How do I match any string not matched in the preceding rules?, How can I expand macros in the input?, FAQ
+@node How can I build a two-pass scanner?
@unnumberedsec How can I build a two-pass scanner?
One way to do it is to filter the first pass to a temporary file,
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?, I am trying to port code from AT&T lex that uses yysptr and yysbuf., How can I build a two-pass scanner?, FAQ
+@node How do I match any string not matched in the preceding rules?
@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
@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., 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
+@node I am trying to port code from AT&T lex that uses yysptr and yysbuf.
@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
@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?, 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
+@node Is there a way to make flex treat NULL like a regular character?
@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"., Why doesnt flex have non-greedy operators like perl does?, Is there a way to make flex treat NULL like a regular character?, FAQ
+@node Whenever flex can not match the input it says "flex scanner jammed".
@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.
See @code{%option default} for more information.
-@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
+@node Why doesnt flex have non-greedy operators like perl does?
@unnumberedsec Why doesn't flex have non-greedy operators like perl does?
A DFA can do a non-greedy match by stopping
This approach also has much better error-reporting properties.
-@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
+@node Memory leak - 16386 bytes allocated by malloc.
@unnumberedsec Memory leak - 16386 bytes allocated by malloc.
@anchor{faq-memory-leak}
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()?, How do I use my own I/O classes in a C++ scanner?, Memory leak - 16386 bytes allocated by malloc., FAQ
+@node How do I track the byte offset for lseek()?
@unnumberedsec How do I track the byte offset for lseek()?
@example
(You need to be careful to update your bookkeeping if you use @code{yymore(}),
@code{yyless()}, @code{unput()}, or @code{input()}.)
-@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
+@node How do I use my own I/O classes in a C++ scanner?
@section How do I use my own I/O classes in a C++ scanner?
When the flex C++ scanning class rewrite finally happens, then this sort of thing should become much easier.
is necessary with them.
@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
+@node How do I skip as many chars as possible?
@unnumberedsec How do I skip as many chars as possible?
How do I skip as many chars as possible -- without interfering with the other
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-33, unnamed-faq-42, How do I skip as many chars as possible?, FAQ
-@unnumberedsec unnamed-faq-33
+@node deleteme00
+@unnumberedsec deleteme00
@example
@verbatim
QUESTION:
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-42, unnamed-faq-43, unnamed-faq-33, FAQ
-@unnumberedsec unnamed-faq-42
+@node Are certain equivalent patterns faster than others?
+@unnumberedsec Are certain equivalent patterns faster than others?
@example
@verbatim
To: Adoram Rogel <adoram@orna.hybridge.com>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-43, unnamed-faq-44, unnamed-faq-42, FAQ
-@unnumberedsec unnamed-faq-43
+@node Is backing up a big deal?
+@unnumberedsec Is backing up a big deal?
@example
@verbatim
To: Adoram Rogel <adoram@hybridge.com>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-44, unnamed-faq-45, unnamed-faq-43, FAQ
-@unnumberedsec unnamed-faq-44
+@node Can I fake multi-byte character support?
+@unnumberedsec Can I fake multi-byte character support?
@example
@verbatim
To: Heeman_Lee@hp.com
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-45, unnamed-faq-46, unnamed-faq-44, FAQ
-@unnumberedsec unnamed-faq-45
+@node deleteme01
+@unnumberedsec deleteme01
@example
@verbatim
To: moleary@primus.com
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-46, unnamed-faq-47, unnamed-faq-45, FAQ
-@unnumberedsec unnamed-faq-46
+@node Can you discuss some flex internals?
+@unnumberedsec Can you discuss some flex internals?
@example
@verbatim
To: Johan Linde <jl@theophys.kth.se>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-47, unnamed-faq-48, unnamed-faq-46, FAQ
-@unnumberedsec unnamed-faq-47
+@node unput() messes up yy_at_bol
+@unnumberedsec unput() messes up yy_at_bol
@example
@verbatim
To: Xinying Li <xli@npac.syr.edu>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-48, unnamed-faq-49, unnamed-faq-47, FAQ
-@unnumberedsec unnamed-faq-48
+@node The | operator is not doing what I want
+@unnumberedsec The | operator is not doing what I want
@example
@verbatim
To: Alain.ISSARD@st.com
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-49, unnamed-faq-50, unnamed-faq-48, FAQ
-@unnumberedsec unnamed-faq-49
+@node Why can't flex understand this variable trailing context pattern?
+@unnumberedsec Why can't flex understand this variable trailing context pattern?
@example
@verbatim
To: Gregory Margo <gmargo@newton.vip.best.com>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-50, unnamed-faq-51, unnamed-faq-49, FAQ
-@unnumberedsec unnamed-faq-50
+@node The ^ operator isn't working
+@unnumberedsec The ^ operator isn't working
@example
@verbatim
To: Thomas Hadig <hadig@toots.physik.rwth-aachen.de>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-51, unnamed-faq-52, unnamed-faq-50, FAQ
-@unnumberedsec unnamed-faq-51
+@node Trailing context is getting confused with trailing optional patterns
+@unnumberedsec Trailing context is getting confused with trailing optional patterns
@example
@verbatim
To: Adoram Rogel <adoram@hybridge.com>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-52, unnamed-faq-53, unnamed-faq-51, FAQ
-@unnumberedsec unnamed-faq-52
+@node Is flex GNU or not?
+@unnumberedsec Is flex GNU or not?
@example
@verbatim
To: Cameron MacKinnon <mackin@interlog.com>
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-53, unnamed-faq-54, unnamed-faq-52, FAQ
+@node unnamed-faq-53
@unnumberedsec unnamed-faq-53
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-54, unnamed-faq-55, unnamed-faq-53, FAQ
+@node unnamed-faq-54
@unnumberedsec unnamed-faq-54
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-55, unnamed-faq-56, unnamed-faq-54, FAQ
+@node unnamed-faq-55
@unnumberedsec unnamed-faq-55
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-56, unnamed-faq-57, unnamed-faq-55, FAQ
+@node unnamed-faq-56
@unnumberedsec unnamed-faq-56
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-57, unnamed-faq-58, unnamed-faq-56, FAQ
+@node unnamed-faq-57
@unnumberedsec unnamed-faq-57
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-58, unnamed-faq-59, unnamed-faq-57, FAQ
+@node unnamed-faq-58
@unnumberedsec unnamed-faq-58
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-59, unnamed-faq-60, unnamed-faq-58, FAQ
+@node unnamed-faq-59
@unnumberedsec unnamed-faq-59
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-60, unnamed-faq-61, unnamed-faq-59, FAQ
+@node unnamed-faq-60
@unnumberedsec unnamed-faq-60
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-61, unnamed-faq-62, unnamed-faq-60, FAQ
+@node unnamed-faq-61
@unnumberedsec unnamed-faq-61
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-62, unnamed-faq-63, unnamed-faq-61, FAQ
+@node unnamed-faq-62
@unnumberedsec unnamed-faq-62
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-63, unnamed-faq-64, unnamed-faq-62, FAQ
+@node unnamed-faq-63
@unnumberedsec unnamed-faq-63
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-64, unnamed-faq-65, unnamed-faq-63, FAQ
+@node unnamed-faq-64
@unnumberedsec unnamed-faq-64
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-65, unnamed-faq-66, unnamed-faq-64, FAQ
+@node unnamed-faq-65
@unnumberedsec unnamed-faq-65
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-66, unnamed-faq-67, unnamed-faq-65, FAQ
+@node unnamed-faq-66
@unnumberedsec unnamed-faq-66
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-67, unnamed-faq-68, unnamed-faq-66, FAQ
+@node unnamed-faq-67
@unnumberedsec unnamed-faq-67
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-68, unnamed-faq-69, unnamed-faq-67, FAQ
+@node unnamed-faq-68
@unnumberedsec unnamed-faq-68
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-69, unnamed-faq-70, unnamed-faq-68, FAQ
+@node unnamed-faq-69
@unnumberedsec unnamed-faq-69
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-70, unnamed-faq-71, unnamed-faq-69, FAQ
+@node unnamed-faq-70
@unnumberedsec unnamed-faq-70
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-71, unnamed-faq-72, unnamed-faq-70, FAQ
+@node unnamed-faq-71
@unnumberedsec unnamed-faq-71
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-72, unnamed-faq-73, unnamed-faq-71, FAQ
+@node unnamed-faq-72
@unnumberedsec unnamed-faq-72
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-73, unnamed-faq-74, unnamed-faq-72, FAQ
+@node unnamed-faq-73
@unnumberedsec unnamed-faq-73
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-74, unnamed-faq-75, unnamed-faq-73, FAQ
+@node unnamed-faq-74
@unnumberedsec unnamed-faq-74
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-75, unnamed-faq-76, unnamed-faq-74, FAQ
+@node unnamed-faq-75
@unnumberedsec unnamed-faq-75
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-76, unnamed-faq-77, unnamed-faq-75, FAQ
+@node unnamed-faq-76
@unnumberedsec unnamed-faq-76
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-77, unnamed-faq-78, unnamed-faq-76, FAQ
+@node unnamed-faq-77
@unnumberedsec unnamed-faq-77
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-78, unnamed-faq-79, unnamed-faq-77, FAQ
+@node unnamed-faq-78
@unnumberedsec unnamed-faq-78
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-79, unnamed-faq-80, unnamed-faq-78, FAQ
+@node unnamed-faq-79
@unnumberedsec unnamed-faq-79
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-80, unnamed-faq-81, unnamed-faq-79, FAQ
+@node unnamed-faq-80
@unnumberedsec unnamed-faq-80
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-81, unnamed-faq-82, unnamed-faq-80, FAQ
+@node unnamed-faq-81
@unnumberedsec unnamed-faq-81
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-82, unnamed-faq-83, unnamed-faq-81, FAQ
+@node unnamed-faq-82
@unnumberedsec unnamed-faq-82
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-83, unnamed-faq-84, unnamed-faq-82, FAQ
+@node unnamed-faq-83
@unnumberedsec unnamed-faq-83
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-84, unnamed-faq-85, unnamed-faq-83, FAQ
+@node unnamed-faq-84
@unnumberedsec unnamed-faq-84
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-85, unnamed-faq-86, unnamed-faq-84, FAQ
+@node unnamed-faq-85
@unnumberedsec unnamed-faq-85
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-86, unnamed-faq-87, unnamed-faq-85, FAQ
+@node unnamed-faq-86
@unnumberedsec unnamed-faq-86
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-87, unnamed-faq-88, unnamed-faq-86, FAQ
+@node unnamed-faq-87
@unnumberedsec unnamed-faq-87
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-88, unnamed-faq-90, unnamed-faq-87, FAQ
+@node unnamed-faq-88
@unnumberedsec unnamed-faq-88
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-90, unnamed-faq-91, unnamed-faq-88, FAQ
+@node unnamed-faq-90
@unnumberedsec unnamed-faq-90
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-91, unnamed-faq-92, unnamed-faq-90, FAQ
+@node unnamed-faq-91
@unnumberedsec unnamed-faq-91
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-92, unnamed-faq-93, unnamed-faq-91, FAQ
+@node unnamed-faq-92
@unnumberedsec unnamed-faq-92
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-93, unnamed-faq-94, unnamed-faq-92, FAQ
+@node unnamed-faq-93
@unnumberedsec unnamed-faq-93
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-94, unnamed-faq-95, unnamed-faq-93, FAQ
+@node unnamed-faq-94
@unnumberedsec unnamed-faq-94
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-95, unnamed-faq-96, unnamed-faq-94, FAQ
+@node unnamed-faq-95
@unnumberedsec unnamed-faq-95
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-96, unnamed-faq-97, unnamed-faq-95, FAQ
+@node unnamed-faq-96
@unnumberedsec unnamed-faq-96
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-97, unnamed-faq-98, unnamed-faq-96, FAQ
+@node unnamed-faq-97
@unnumberedsec unnamed-faq-97
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-98, unnamed-faq-99, unnamed-faq-97, FAQ
+@node unnamed-faq-98
@unnumberedsec unnamed-faq-98
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-99, unnamed-faq-100, unnamed-faq-98, FAQ
+@node unnamed-faq-99
@unnumberedsec unnamed-faq-99
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-100, unnamed-faq-101, unnamed-faq-99, FAQ
+@node unnamed-faq-100
@unnumberedsec unnamed-faq-100
@example
@verbatim
@end example
@c TODO: Evaluate this faq.
-@node unnamed-faq-101, , unnamed-faq-100, FAQ
+@node unnamed-faq-101
@unnumberedsec unnamed-faq-101
@example
@verbatim
@printindex op
+@c A vim script to name the faq entries. delete this when faqs are no longer
+@c named "unnamed-faq-XXX".
+@c
+@c fu! Faq2 () range abort
+@c let @r=input("Rename to: ")
+@c exe "%s/" . @w . "/" . @r . "/g"
+@c normal 'f
+@c endf
+@c nnoremap <F5> 1G/@node\s\+unnamed-faq-\d\+<cr>mfww"wy5ezt:call Faq()<cr>
+
@bye