HANDBOOK / REFLEX REFERENCE MANUAL /

# Output

A specification constructed by Reflex has the following structure:

       %{
       YYSTYPE Block
       SETPOS Block
       LITBLOCK Block
       %}
       LEXDEF Block
       %%
       Token Section
       COMMENTS Block
       LAYOUT Block
       ILLEGAL Block
       %%
       LEXFUNC Block
       YYWRAP Block

The block `YYSTYPE` has the form

       #include "gen.h"
       extern YYSTYPE yylval;

The block `SETPOS` has the form

       extern long yypos;
       #define yysetpos() { yylval.attr[0] = yypos; yypos += yyleng; }

The blocks `LITBLOCK` and `LEXDEF` are empty.

The Token Section contains, for each token `"alpha"` appearing literally in the Gentle specification a Lex rule of the form

       "alpha" { yysetpos(); return token_code; }

These rules are followed by the rules appearing in the token description files.

The block `COMMENTS` and `LAYOUT` are described above.

The block `ILLEGAL` has the form

       . { yysetpos(); yyerror("illegal token"); }

The block `LEXFUNC` is empty.

The block `YYWRAP` has the form.

       #ifndef yywrap
       yywrap() { return 1; }
       #endif