Provided by: re2c_0.13.5-1build2_amd64 bug

NAME

       re2c - convert regular-expressions to C/C++

SYNOPSIS

       re2c [-bdDefFghisuvVw1] [-o output] [-c [-t header]] file

DESCRIPTION

       re2c  is  a preprocessor that generates C-based recognizers from regular expressions.  The
       input to re2c consists of C/C++ source interleaved with comments of the form  /*!re2c  ...
       */  which  contain scanner specifications.  In the output these comments are replaced with
       code that, when executed, will find the next input  token  and  then  execute  some  user-
       supplied token-specific code.

       For example, given the following code

          char *scan(char *p)
          {
          /*!re2c
                  re2c:define:YYCTYPE  = "unsigned char";
                  re2c:define:YYCURSOR = p;
                  re2c:yyfill:enable   = 0;
                  re2c:yych:conversion = 1;
                  re2c:indent:top      = 1;
                  [0-9]+          {return p;}
                  [^]             {return (char*)0;}
          */
          }

       re2c -is will generate

          /* Generated by re2c on Sat Apr 16 11:40:58 1994 */
          char *scan(char *p)
          {
              {
                  unsigned char yych;

                  yych = (unsigned char)*p;
                  if(yych <= '/') goto yy4;
                  if(yych >= ':') goto yy4;
                  ++p;
                  yych = (unsigned char)*p;
                  goto yy7;
          yy3:
                  {return p;}
          yy4:
                  ++p;
                  yych = (unsigned char)*p;
                  {return char*)0;}
          yy6:
                  ++p;
                  yych = (unsigned char)*p;
          yy7:
                  if(yych <= '/') goto yy3;
                  if(yych <= '9') goto yy6;
                  goto yy3;
              }

          }

       You  can  place one /*!max:re2c */ comment that will output a "#define YYMAXFILL <n>" line
       that holds the maximum number of characters required to  parse  the  input.  That  is  the
       maximum  value  YYFILL(n)  will  receive.  If  -1  is in effect then YYMAXFILL can only be
       triggered once after the last /*!re2c */.

       You can also use /*!ignore:re2c */ blocks that allows to document  the  scanner  code  and
       will not be part of the output.

OPTIONS

       re2c provides the following options:

       -?     -h Invoke a short help.

       -b     Implies  -s.  Use bit vectors as well in the attempt to coax better code out of the
              compiler.  Most useful for specifications with more than a few keywords  (e.g.  for
              most programming languages).

       -c     Used to support (f)lex-like condition support.

       -d     Creates  a  parser  that  dumps information about the current position and in which
              state the parser is while parsing the input. This is useful to debug parser  issues
              and  states.  If  you  use  this  switch you need to define a macro YYDEBUG that is
              called like a function with two parameters: void YYDEBUG(int state, char  current).
              The  first parameter receives the state or -1 and the second parameter receives the
              input at the current cursor.

       -D     Emit Graphviz dot data. It can then be processed with e.g.  "dot -Tpng input.dot  >
              output.png". Please note that scanners with many states may crash dot.

       -e     Cross-compile from an ASCII platform to an EBCDIC one.

       -f     Generate  a  scanner  with  support  for  storable state.  For details see below at
              SCANNER WITH STORABLE STATES.

       -F     Partial support for flex syntax. When this flag is active  then  named  definitions
              must be surrounded by curly braces and can be defined without an equal sign and the
              terminating semi colon. Instead names are treated as direct double quoted strings.

       -g     Generate a scanner  that  utilizes  GCC's  computed  goto  feature.  That  is  re2c
              generates jump tables whenever a decision is of a certain complexity (e.g. a lot of
              if conditions are otherwise necessary). This is only useable with GCC and  produces
              output  that  cannot be compiled with any other compiler. Note that this implies -b
              and that the complexity threshold can be configured using the inplace configuration
              "cgoto:threshold".

       -i     Do  not output #line information. This is usefull when you want use a CMS tool with
              the re2c output which you might want if you do not require your users to have  re2c
              themselves when building from your source.  -o output Specify the output file.

       -r     Allows  reuse  of  scanner definitions with '/*!use:re2c' after every '/*!use:re2c'
              block that follows. These blocks can  contain  inplace  configurations,  especially
              're2c:flags:w'  and  're2c:flags:u'.   That  way  it is possible to create the same
              scanner multiple times for different character types, different input mechanisms or
              different  output mechanisms.  The '/*!use:re2c' blocks can also contain additional
              rules that will be appended to the set of rules in '/*!rules:re2c'.

       -s     Generate nested ifs for some switches.  Many compilers need this assist to generate
              better code.

       -t     Create  a  header  file  that contains types for the (f)lex-like condition support.
              This can only be activated when -c is in use.

       -u     Generate a parser that supports Unicode chars (UTF-32). This  means  the  generated
              code can deal with any valid Unicode character up to 0x10FFFF. When UTF-8 or UTF-16
              needs to be supported you need to convert the incoming stream to UTF-32 upon  input
              yourself.

       -v     Show version information.

       -V     Show the version as a number XXYYZZ.

       -w     Create  a  parser  that  supports wide chars (UCS-2). This implies -s and cannot be
              used together with -e switch.

       -1     Force single pass  generation,  this  cannot  be  combined  with  -f  and  disables
              YYMAXFILL generation prior to last re2c block.

       --no-generation-date
              Suppress  date  output  in  the  generated  output  so  that it only shows the re2c
              version.

       --case-insensitive
              All strings are case insensitive, so all "-expressions are treated in the same  way
              '-expressions are.

       --case-inverted
              Invert  the  meaning  of single and double quoted strings.  With this switch single
              quotes are case sensitive and double quotes are case insensitive.

INTERFACE CODE

       Unlike other scanner generators, re2c does not generate complete scanners: the  user  must
       supply  some  interface code.  In particular, the user must define the following macros or
       use the corresponding inplace configurations:

       YYCONDTYPE
              In -c mode you can use -t to generate a file that contains the enumeration used  as
              conditions. Each of the values refers to a condition of a rule set.

       YYCTXMARKER
              l-expression   of  type  *YYCTYPE.   The  generated  code  saves  trailing  context
              backtracking information in YYCTXMARKER.  The user only needs to define this  macro
              if  a  scanner  specification  uses trailing context in one or more of its regular-
              expressions.

       YYCTYPE
              Type used to hold an input symbol.  Usually char or unsigned char.

       YYCURSOR
              l-expression of type *YYCTYPE  that  points  to  the  current  input  symbol.   The
              generated  code  advances  YYCURSOR  as symbols are matched.  On entry, YYCURSOR is
              assumed to point to the first character of the current token.   On  exit,  YYCURSOR
              will point to the first character of the following token.

       YYDEBUG(state,current)
              This  is  only  needed  if the -d flag was specified. It allows to easily debug the
              generated parser by calling a user defined function for every state.  The  function
              should  have  the  following signature: void YYDEBUG(int state, char current).  The
              first parameter receives the state or -1 and  the  second  parameter  receives  the
              input at the current cursor.

       YYFILL(n)
              The generated code "calls" YYFILL(n) when the buffer needs (re)filling:  at least n
              additional  characters  should  be  provided.  YYFILL(n)  should  adjust  YYCURSOR,
              YYLIMIT,  YYMARKER  and  YYCTXMARKER  as needed.  Note that for typical programming
              languages n will be the length of the longest keyword plus one.  The user can place
              a  comment of the form /*!max:re2c */ once to insert a YYMAXFILL(n) definition that
              is set to the maximum length value. If -1 switch is  used  then  YYMAXFILL  can  be
              triggered only once after the last /*!re2c */ block.

       YYGETCONDITION()
              This  define  is  used to get the condition prior to entering the scanner code when
              using -c switch. The value must be initialized with a value  from  the  enumeration
              YYCONDTYPE type.

       YYGETSTATE()
              The  user  only  needs  to define this macro if the -f flag was specified.  In that
              case, the generated code "calls" YYGETSTATE() at the very beginning of the  scanner
              in  order to obtain the saved state. YYGETSTATE() must return a signed integer. The
              value must be either -1, indicating that the scanner is entered for the first time,
              or a value previously saved by YYSETSTATE(s).  In the second case, the scanner will
              resume operations right after where the last YYFILL(n) was called.

       YYLIMIT
              Expression of type *YYCTYPE that marks the end of the buffer  (YYLIMIT[-1]  is  the
              last  character in the buffer).  The generated code repeatedly compares YYCURSOR to
              YYLIMIT to determine when the buffer needs (re)filling.

       YYMARKER
              l-expression of type *YYCTYPE.  The generated code saves  backtracking  information
              in YYMARKER. Some easy scanners might not use this.

       YYMAXFILL
              This will be automatically defined by /*!max:re2c */ blocks as explained above.

       YYSETCONDITION(c)
              This  define  is used to set the condition in transition rules.  This is only being
              used when -c is active and transition rules are being used.

       YYSETSTATE(s)
              The user only needs to define this macro if the -f flag  was  specified.   In  that
              case,  the  generated  code  "calls" YYSETSTATE just before calling YYFILL(n).  The
              parameter to YYSETSTATE is a signed integer that uniquely identifies  the  specific
              instance of YYFILL(n) that is about to be called.  Should the user wish to save the
              state of the scanner and have YYFILL(n) return to the caller, all he has to  do  is
              store  that  unique  identifer  in a variable.  Later, when the scannered is called
              again, it will call YYGETSTATE() and resume execution right where it left off.  The
              generated  code will contain both YYSETSTATE(s) and YYGETSTATE even if YYFILL(n) is
              being disabled.

SCANNER WITH STORABLE STATES

       When the -f flag is specified, re2c generates a scanner that can store its current  state,
       return to the caller, and later resume operations exactly where it left off.

       The  default  operation  of re2c is a "pull" model, where the scanner asks for extra input
       whenever it needs it. However, this mode of operation assumes  that  the  scanner  is  the
       "owner" the parsing loop, and that may not always be convenient.

       Typically,  if  there  is  a  preprocessor ahead of the scanner in the stream, or for that
       matter any other procedural source of data, the scanner cannot "ask" for more data  unless
       both scanner and source live in a separate threads.

       The -f flag is useful for just this situation : it lets users design scanners that work in
       a "push" model, i.e. where data is fed to the scanner chunk by  chunk.  When  the  scanner
       runs out of data to consume, it just stores its state, and return to the caller. When more
       input data is fed to the scanner, it resumes operations exactly where it left off.

       When using the -f option re2c does not  accept  stdin  because  it  has  to  do  the  full
       generation process twice which means it has to read the input twice. That means re2c would
       fail in case it cannot open the input twice or  reading  the  input  for  the  first  time
       influences the second read attempt.

       Changes needed compared to the "pull" model.

       1. User has to supply macros YYSETSTATE() and YYGETSTATE(state)

       2.  The  -f  option  inhibits declaration of yych and yyaccept. So the user has to declare
       these. Also the user has to save and restore these. In the example examples/push.re  these
       are declared as fields of the (C++) class of which the scanner is a method, so they do not
       need to be saved/restored explicitly. For C they could e.g. be  made  macros  that  select
       fields  from  a structure passed in as parameter. Alternatively, they could be declared as
       local variables, saved with YYFILL(n) when it decides to return and restored at  entry  to
       the  function.  Also,  it could be more efficient to save the state from YYFILL(n) because
       YYSETSTATE(state) is called unconditionally. YYFILL(n)  however  does  not  get  state  as
       parameter, so we would have to store state in a local variable by YYSETSTATE(state).

       3. Modify YYFILL(n) to return (from the function calling it) if more input is needed.

       4. Modify caller to recognise "more input is needed" and respond appropriately.

       5.  The generated code will contain a switch block that is used to restores the last state
       by jumping behind the corrspoding YYFILL(n) call. This code is automatically generated  in
       the  epilog  of the first "/*!re2c */" block.  It is possible to trigger generation of the
       YYGETSTATE() block earlier by placing a "/*!getstate:re2c */" comment. This is  especially
       useful when the scanner code should be wrapped inside a loop.

       Please  see  examples/push.re  for  push-model  scanner. The generated code can be tweaked
       using inplace configurations "state:abort" and "state:nextlabel".

SCANNER WITH CONDITION SUPPORT

       You can preceed regular-expressions with a list of  condition  names  when  using  the  -c
       switch.  In  this  case re2c generates scanner blocks for each conditon. Where each of the
       generated blocks has its own precondition. The precondition  is  given  by  the  interface
       define YYGETCONDITON and must be of type YYCONDTYPE.

       There  are two special rule types. First, the rules of the condition '*' are merged to all
       conditions. And second the empty condition list allows to provide a code block  that  does
       not  have  a scanner part. Meaning it does not allow any regular expression. The condition
       value referring to this special block is always the one with the enumeration value 0. This
       way  the  code  of  this special rule can be used to initialize a scanner. It is in no way
       necessary to  have  these  rules:  but  sometimes  it  is  helpful  to  have  a  dedicated
       uninitialized condition state.

       Non  empty  rules  allow  to specify the new condition, which makes them transition rules.
       Besides generating  calls  for  the  define  YYSETCONDTITION  no  other  special  code  is
       generated.

       There is another kind of special rules that allow to prepend code to any code block of all
       rules of a certain set of conditions or to all code blocks  to  all  rules.  This  can  be
       helpful  when some operation is common among rules. For instance this can be used to store
       the length of the scanned string. These special setup rules start with an exclamation mark
       followed  by  either  a  list of conditions <! condition, ... > or a star <!*>.  When re2c
       generates the code for a rule whose state does not have a setup rule and  a  star'd  setup
       rule is present, than that code will be used as setup code.

SCANNER SPECIFICATIONS

       Each   scanner   specification   consists  of  a  set  of  rules,  named  definitions  and
       configurations.

       Rules consist of a regular-expression along with a block of  C/C++  code  that  is  to  be
       executed  when the associated regular-expression is matched. You can either start the code
       with an opening curly brace or the sequence ':='. When the code with a  curly  brace  then
       re2c  counts  the  brace  depth  and stops looking for code automatically. Otherwise curly
       braces are not allowed and re2c stops looking for code at the first  line  that  does  not
       begin with whitespace.

              regular-expression { C/C++ code }

              regular-expression := C/C++ code

       If  -c  is  active  then each regular-expression is preceeded by a list of comma separated
       condition names. Besides normal naming rules there are  two  special  cases.  A  rule  may
       contain the single condition name '*' and no contition name at all. In the latter case the
       rule cannot have a regular-expression. Non empty rules may further more  specify  the  new
       condition.  In  that  case  re2c will generated the necessary code to chnage the condition
       automatically. Just as above code can be started with a curly brace of the sequence  ':='.
       Further  more  rules  can  use ':=>' as a shortcut to automatically generate code that not
       only sets the new condition state but also continues  execution  with  the  new  state.  A
       shortcut  rule  should  not be used in a loop where there is code between the start of the
       loop and the re2c block unless re2c:cond:goto  is  changed  to  'continue;'.  If  code  is
       necessary before all rule (though not simple jumps) you can doso by using <! pseudo-rules.

              <condition-list> regular-expression { C/C++ code }

              <condition-list> regular-expression := C/C++ code

              <condition-list> regular-expression => condition { C/C++ code }

              <condition-list> regular-expression => condition := C/C++ code

              <condition-list> regular-expression :=> condition

              <*> regular-expression { C/C++ code }

              <*> regular-expression := C/C++ code

              <*> regular-expression => condition { C/C++ code }

              <*> regular-expression => condition := C/C++ code

              <*> regular-expression :=> condition

              <> { C/C++ code }

              <> := C/C++ code

              <> => condition { C/C++ code }

              <> => condition := C/C++ code

              <> :=> condition

              <!condition-list> { C/C++ code }

              <!condition-list> := C/C++ code

              <!*> { C/C++ code }

              <!*> := C/C++ code

       Named definitions are of the form:

              name = regular-expression;

       -F is active, then named definitions are also of the form:

              name regular-expression

       Configurations look like named definitions whose names start with "re2c:":

              re2c:name = value;
              re2c:name = "value";

SUMMARY OF RE2C REGULAR-EXPRESSIONS

       "foo"  the literal string foo.  ANSI-C escape sequences can be used.

       'foo'  the  literal  string  foo  (characters  [a-zA-Z] treated case-insensitive).  ANSI-C
              escape sequences can be used.

       [xyz]  a "character class"; in this case, the regular-expression matches either an 'x',  a
              'y', or a 'z'.

       [abj-oZ]
              a  "character class" with a range in it; matches an 'a', a 'b', any letter from 'j'
              through 'o', or a 'Z'.

       [^class]
              an inverted "character class".

       r\s    match any r which isn't an s. r and s must  be  regular-expressions  which  can  be
              expressed as character classes.

       r*     zero or more r's, where r is any regular-expression

       r+     one or more r's

       r?     zero or one r's (that is, "an optional r")

       name   the expansion of the "named definition" (see above)

       (r)    an r; parentheses are used to override precedence (see below)

       rs     an r followed by an s ("concatenation")

       r|s    either an r or an s

       r/s    an  r  but  only  if it is followed by an s. The s is not part of the matched text.
              This type of regular-expression is called "trailing context".  A  trailing  context
              can only be the end of a rule and not part of a named definition.

       r{n}   matches r exactly n times.

       r{n,}  matches r at least n times.

       r{n,m} matches r at least n but not more than m times.

       .      match any character except newline (\n).

       def    matches named definition as specified by def only if -F is off. If the switch -F is
              active then this behaves like it was enclosed in  double  quotes  and  matches  the
              string def.

       Character  classes  and  string  literals  may  contain  octoal  or  hexadecimal character
       definitions and the following set of escape sequences (\n,
        \t, \v, \b, \r, \f, \a, \\).  An octal character is defined by a  backslash  followed  by
       its  three octal digits and a hexadecimal character is defined by backslash, a lower cased
       'x' and its two hexadecimal digits  or  a  backslash,  an  upper  cased  X  and  its  four
       hexadecimal digits.

       re2c  further  more  supports  the c/c++ unicode notation. That is a backslash followed by
       either a lowercased u and its four hexadecimal digits or an uppercased  U  and  its  eight
       hexadecimal  digits.  However  only  in -u mode the generated code can deal with any valid
       Unicode character up to 0x10FFFF.

       Since characters greater \X00FF are not allowed in non unicode  mode,  the  only  portable
       "any" rules are (.|"\n") and [^].

       The  regular-expressions  listed  above  are grouped according to precedence, from highest
       precedence at the top to  lowest  at  the  bottom.   Those  grouped  together  have  equal
       precedence.

INPLACE CONFIGURATION

       It  is  possible  to configure code generation inside re2c blocks. The following lists the
       available configurations:

       re2c:condprefix = yyc_ ;
              Allows to specify the prefix used for  condition  labels.  That  is  this  text  is
              prepended to any condition label in the generated output file.

       re2c:condenumprefix = yyc ;
              Allows  to  specify  the  prefix  used  for  condition values. That is this text is
              prepended to any condition enum value in the generated output file.

       re2c:cond:divider = "/* *********************************** */" ;
              Allows to customize the devider for condition blocks. You can use '@@' to  put  the
              name of the condition or ustomize the plaeholder using re2c:cond:divider@cond.

       re2c:cond:divider@cond = @@ ;
              Specifies  the  placeholder  that  will  be  replaced  with  the  condition name in
              re2c:cond:divider.

       re2c:cond:goto = "goto @@;" ;
              Allows to customize the condition goto statements used with ':=>' style rules.  You
              can  use  '@@'  to  put  the name of the condition or ustomize the plaeholder using
              re2c:cond:goto@cond. You can also change this to 'continue;', which would allow you
              to continue with the next loop cycle including any code between loop start and re2c
              block.

       re2c:cond:goto@cond = @@ ;
              Spcifies the placeholder  that  will  be  replaced  with  the  condition  label  in
              re2c:cond:goto.

       re2c:indent:top = 0 ;
              Specifies  the  minimum  number  of  indendation  to  use. Requires a numeric value
              greater than or equal zero.

       re2c:indent:string = "\t" ;
              Specifies the string to use for indendation. Requires a string that should  contain
              only whitespace unless you need this for external tools. The easiest way to specify
              spaces is to enclude them in single or double  quotes.  If  you  do  not  want  any
              indendation at all you can simply set this to "".

       re2c:yych:conversion = 0 ;
              When  this  setting  is non zero, then re2c automatically generates conversion code
              whenever  yych  gets  read.  In  this  case  the  type  must   be   defined   using
              re2c:define:YYCTYPE.

       re2c:yych:emit = 1 ;
              Generation of yych can be suppressed by setting this to 0.

       re2c:yybm:hex = 0 ;
              If  set to zero then a decimal table is being used else a hexadecimal table will be
              generated.

       re2c:yyfill:enable = 1 ;
              Set this to zero to suppress generation of YYFILL(n). When using this  be  sure  to
              verify  that  the  generated  scanner  does  not  read  behind input. Allowing this
              behavior might introduce sever security issues to you programs.

       re2c:yyfill:check = 1 ;
              This can be set 0 to suppress output  of  the  pre  condition  using  YYCURSOR  and
              YYLIMIT which becomes usefull when YYLIMIT + max(YYFILL) is always accessible.

       re2c:yyfill:parameter = 1 ;
              Allows  to  suppress  parameter  passing  to  YYFILL  calls. If set to zero then no
              parameter is passed to  YYFILL.  However  define:YYFILL@LEN  allows  to  specify  a
              replacement  string  for  the  actual length value. If set to a non zero value then
              YYFILL usage will be followed by the  number  of  requested  characters  in  braces
              unless  re2c:define:YYFILL:naked is set.  Also look at re2c:define:YYFILL:naked and
              re2c:define:YYFILL@LEN.

       re2c:startlabel = 0 ;
              If set to a non zero integer then the start label of the next scanner  blocks  will
              be  generated even if not used by the scanner itself. Otherwise the normal yy0 like
              start label is only being generated if needed. If set to a text value then a  label
              with  that  text  will be generated regardless of whether the normal start label is
              being used or not. This setting is being reset to 0 after a start  label  has  been
              generated.

       re2c:labelprefix = yy ;
              Allows  to  change  the prefix of numbered labels. The default is yy and can be set
              any string that is a valid label.

       re2c:state:abort = 0 ;
              When not zero and switch -f is active then the  YYGETSTATE  block  will  contain  a
              default case that aborts and a -1 case is used for initialization.

       re2c:state:nextlabel = 0 ;
              Used  when  -f  is  active to control whether the YYGETSTATE block is followed by a
              yyNext: label line. Instead of using yyNext you can usually also use  configuration
              startlabel  to  force  a  specific  start  label  or default to yy0 as start label.
              Instead of using a dedicated label it is often better to  separate  the  YYGETSTATE
              code from the actual scanner code by placing a "/*!getstate:re2c */" comment.

       re2c:cgoto:threshold = 9 ;
              When  -g  is  active  this  value  specifies the complexity threshold that triggers
              generation of jump tables rather than using nested  if's  and  decision  bitfields.
              The  threshold  is  compared  against  a calculated estimation of if-s needed where
              every used bitmap divides the threshold by 2.

       re2c:yych:conversion = 0 ;
              When the input uses signed characters and -s or -b  switches  are  in  effect  re2c
              allows  to  automatically  convert  to  the  unsigned  character  type that is then
              necessary for its internal single character. When this setting is zero or an  empty
              string  the conversion is disabled. Using a non zero number the conversion is taken
              from YYCTYPE. If that is given by an inplace  configuration  that  value  is  being
              used.  Otherwise  it  will  be  (YYCTYPE) and changes to that configuration are  no
              longer possible. When this setting is a string the braces must  be  specified.  Now
              assuming  your  input  is a char* buffer and you are using above mentioned switches
              you can set YYCTYPE to unsigned char and this setting to  either  1  or  "(unsigned
              char)".

       re2c:define:define:YYCONDTYPE = YYCONDTYPE ;
              Enumeration used for condition support with -c mode.

       re2c:define:YYCTXMARKER = YYCTXMARKER ;
              Allows  to  overwrite  the  define  YYCTXMARKER and thus avoiding it by setting the
              value to the actual code needed.

       re2c:define:YYCTYPE = YYCTYPE ;
              Allows to overwrite the define YYCTYPE and thus avoiding it by setting the value to
              the actual code needed.

       re2c:define:YYCURSOR = YYCURSOR ;
              Allows  to  overwrite the define YYCURSOR and thus avoiding it by setting the value
              to the actual code needed.

       re2c:define:YYDEBUG = YYDEBUG ;
              Allows to overwrite the define YYDEBUG and thus avoiding it by setting the value to
              the actual code needed.

       re2c:define:YYFILL = YYFILL ;
              Allows  to overwrite the define YYFILL and thus avoiding it by setting the value to
              the actual code needed.

       re2c:define:YYFILL:naked = 0 ;
              When set to 1 neither braces, parameter nor semicolon gets emitted.

       re2c:define:YYFILL@len = @@ ;
              When using re2c:define:YYFILL and re2c:yyfill:parameter is 0 then any occurence  of
              this text inside YYFILL will be replaced with the actual length value.

       re2c:define:YYGETCONDITION = YYGETCONDITION ;
              Allows to overwrite the define YYGETCONDITION.

       re2c:define:YYGETCONDITION:naked =  ;
              When set to 1 neither braces, parameter nor semicolon gets emitted.

       re2c:define:YYGETSTATE = YYGETSTATE ;
              Allows to overwrite the define YYGETSTATE and thus avoiding it by setting the value
              to the actual code needed.

       re2c:define:YYGETSTATE:naked = 0 ;
              When set to 1 neither braces, parameter nor semicolon gets emitted.

       re2c:define:YYLIMIT = YYLIMIT ;
              Allows to overwrite the define YYLIMIT and thus avoiding it by setting the value to
              the actual code needed.

       re2c:define:YYMARKER = YYMARKER ;
              Allows  to  overwrite the define YYMARKER and thus avoiding it by setting the value
              to the actual code needed.

       re2c:define:YYSETCONDITION = YYSETCONDITION ;
              Allows to overwrite the define YYSETCONDITION.

       re2c:define:YYSETCONDITION@cond = @@ ;
              When using re2c:define:YYSETCONDITION  then  any  occurence  of  this  text  inside
              YYSETCONDITION will be replaced with the actual new condition value.

       re2c:define:YYSETSTATE = YYSETSTATE ;
              Allows to overwrite the define YYSETSTATE and thus avoiding it by setting the value
              to the actual code needed.

       re2c:define:YYSETSTATE:naked = 0 ;
              When set to 1 neither braces, parameter nor semicolon gets emitted.

       re2c:define:YYSETSTATE@state = @@ ;
              When using re2c:define:YYSETSTATE then any occurence of this text inside YYSETSTATE
              will be replaced with the actual new state value.

       re2c:label:yyFillLabel = yyFillLabel ;
              Allows to overwrite the name of the label yyFillLabel.

       re2c:label:yyNext = yyNext ;
              Allows to overwrite the name of the label yyNext.

       re2c:variable:yyaccept = yyaccept ;
              Allows to overwrite the name of the variable yyaccept.

       re2c:variable:yybm = yybm ;
              Allows to overwrite the name of the variable yybm.

       re2c:variable:yych = yych ;
              Allows to overwrite the name of the variable yych.

       re2c:variable:yyctable = yyctable ;
              When  both  -c  and -g are active then re2c uses this variable to generate a static
              jump table for YYGETCONDITION.

       re2c:variable:yystable = yystable ;
              When both -f and -g are active then re2c uses this variable to  generate  a  static
              jump table for YYGETSTATE.

       re2c:variable:yytarget = yytarget ;
              Allows to overwrite the name of the variable yytarget.

UNDERSTANDING RE2C

       The  subdirectory  lessons of the re2c distribution contains a few step by step lessons to
       get you started with re2c. All examples in the lessons subdirectory can  be  compiled  and
       actually work.

FEATURES

       re2c  does  not  provide  a default action: the generated code assumes that the input will
       consist of a sequence of tokens.  Typically this can be dealt with by adding a  rule  such
       as the one for unexpected characters in the example above.

       The  user  must  arrange for a sentinel token to appear at the end of input (and provide a
       rule for matching it): re2c does not provide an <<EOF>> expression.  If the source is from
       a  null-byte  terminated  string,  a  rule matching a null character will suffice.  If the
       source is from a file then you could pad the input with a newline (or some other character
       that  cannot  appear within another token); upon recognizing such a character check to see
       if it is the sentinel and act accordingly. And you can  also  use  YYFILL(n)  to  end  the
       scanner in case not enough characters are available which is nothing else then e detection
       of end of data/file.

BUGS

       Difference only works for character sets.

       The re2c internal algorithms need documentation.

SEE ALSO

       flex(1), lex(1).

       More information on re2c can be found here:
       http://re2c.org/

AUTHORS

       Peter Bumbulis <peter@csg.uwaterloo.ca>
       Brian Young <bayoung@acm.org>
       Dan Nuffer <nuffer@users.sourceforge.net>
       Marcus Boerger <helly@users.sourceforge.net>
       Hartmut Kaiser <hkaiser@users.sourceforge.net>
       Emmanuel Mogenet <mgix@mgix.com> added storable state

VERSION INFORMATION

       This manpage describes re2c, version 0.13.5.