DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(flex.info.gz) Extra Reentrant Argument

Info Catalog (flex.info.gz) Specify Reentrant (flex.info.gz) Reentrant Detail (flex.info.gz) Global Replacement
 
 19.4.2 The Extra Argument
 -------------------------
 
 All functions take one additional argument: `yyscanner'.
 
    Notice that the calls to `yy_push_state' and `yy_pop_state' both
 have an argument, `yyscanner' , that is not present in a non-reentrant
 scanner.  Here are the declarations of `yy_push_state' and
 `yy_pop_state' in the reentrant scanner:
 
 
          static void yy_push_state  ( int new_state , yyscan_t yyscanner ) ;
          static void yy_pop_state  ( yyscan_t yyscanner  ) ;
 
    Notice that the argument `yyscanner' appears in the declaration of
 both functions.  In fact, all `flex' functions in a reentrant scanner
 have this additional argument.  It is always the last argument in the
 argument list, it is always of type `yyscan_t' (which is typedef'd to
 `void *') and it is always named `yyscanner'.  As you may have guessed,
 `yyscanner' is a pointer to an opaque data structure encapsulating the
 current state of the scanner.  For a list of function declarations, see
  Reentrant Functions. Note that preprocessor macros, such as
 `BEGIN', `ECHO', and `REJECT', do not take this additional argument.
 
Info Catalog (flex.info.gz) Specify Reentrant (flex.info.gz) Reentrant Detail (flex.info.gz) Global Replacement
automatically generated byinfo2html