(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