flex: Definitions Section
5.1 Format of the Definitions Section
=====================================
The "definitions section" contains declarations of simple "name"
definitions to simplify the scanner specification, and declarations of
"start conditions", which are explained in a later section.
Name definitions have the form:
name definition
The 'name' is a word beginning with a letter or an underscore ('_')
followed by zero or more letters, digits, '_', or '-' (dash). The
definition is taken to begin at the first non-whitespace character
following the name and continuing to the end of the line. The
definition can subsequently be referred to using '{name}', which will
expand to '(definition)'. For example,
DIGIT [0-9]
ID [a-z][a-z0-9]*
Defines 'DIGIT' to be a regular expression which matches a single
digit, and 'ID' to be a regular expression which matches a letter
followed by zero-or-more letters-or-digits. A subsequent reference to
{DIGIT}+"."{DIGIT}*
is identical to
([0-9])+"."([0-9])*
and matches one-or-more digits followed by a '.' followed by
zero-or-more digits.
An unindented comment (i.e., a line beginning with '/*') is copied
verbatim to the output up to the next '*/'.
Any _indented_ text or text enclosed in '%{' and '%}' is also copied
verbatim to the output (with the %{ and %} symbols removed). The %{ and
%} symbols must appear unindented on lines by themselves.
A '%top' block is similar to a '%{' ... '%}' block, except that the
code in a '%top' block is relocated to the _top_ of the generated file,
before any flex definitions (1). The '%top' block is useful when you
want certain preprocessor macros to be defined or certain files to be
included before the generated code. The single characters, '{' and '}'
are used to delimit the '%top' block, as show in the example below:
%top{
/* This code goes at the "top" of the generated file. */
#include <stdint.h>
#include <inttypes.h>
}
Multiple '%top' blocks are allowed, and their order is preserved.
---------- Footnotes ----------
(1) Actually, 'yyIN_HEADER' is defined before the '%top' block.