What does this instructions mean in flex (lex) :
#define yywrap() 1
and this [ \t]+$
i find it in the code below:
(%%
[ \t]+ putchar('_');
[ \t]+%
%%
input "hello world"
output "hello_world"
)
According to The Lex & Yacc Page :
When the scanner receives an end-of-file indication from
YY_INPUT
, it then checks theyywrap()
function. Ifyywrap()
returns false (zero), then it is assumed that the function has gone ahead and set upyyin
to point to another input file, and scanning continues. If it returns true (non-zero), then the scanner terminates, returning 0 to its caller. Note that in either case, the start condition remains unchanged; it does not revert toINITIAL
.
The #define
is used to simplify building the program (so that no -ll
linkage option is needed).
Further reading: