
In flex it is possible to provide initializing code in the definition
section (see section ref(definitionsection)) and as the first lines in the
rules section.

Flc() does not support code blocks. Since flc() generates a class with
appropriate header files, there are other means to include code in your
scanner. See also lref(generated files)(files) below.

Neither does flc() support a last `user code' section, where additional code
can be placed to be copied verbatim to the source file. 

There are two reasons for dropping these code blocks. First, the format of the
lexer file becomes simpler. Second, the alternatives to the code blocks are
actually an improvement over the traditional code blocks. With flex one would
use code blocks before the rules to declare local variables that are used in
some of the actions. With flc() it is possible to use data members of the
scanner class for this. With flex the third section of the lexer file could be
used to define helper functions. With flc() helper members may be defined in
the scanner class. Below we list the differences between flex and flc(). We
provide suggestions for flc() solutions to problems that were addressed by
flex features that we no longer support.

Sections ref(diffdef), ref(diffrules) and ref(diffusercode) provide lists of
items which are no longer supported in flc() and offer alternatives.

