(flex.info)Extra Reentrant Argument


Next: Global Replacement Prev: Specify Reentrant Up: Reentrant Detail
Enter node , (file) or (file)node

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
Note: Reentrant Functions.  Note that preprocessor macros, such as
'BEGIN', 'ECHO', and 'REJECT', do not take this additional argument.


automatically generated by info2www version 1.2.2.9