DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(flex.info.gz) Definitions Section

Info Catalog (flex.info.gz) Format (flex.info.gz) Format (flex.info.gz) Rules 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.
 
Info Catalog (flex.info.gz) Format (flex.info.gz) Format (flex.info.gz) Rules Section
automatically generated byinfo2html