%{ #include "genfun.h" #if 0 #define PUSH(s) \ yy_push_state(s); \ generateNewLine(); \ generate_normal("<!-- PUSH " #s " -->"); \ generateNewLine(); #define POP(s) \ yy_pop_state(); \ generateNewLine(); \ generate_normal("<!-- POP " #s " -->"); \ generateNewLine(); #else #define PUSH(s) yy_push_state(s); #define POP(s) yy_pop_state(); #endif #define TRIMNORMAL(n)\ do{ if(yyleng > n){\ yytext[yyleng - n]= '\0';\ generate_normal(yytext);\ }}while(0) %} %option stack nomain yylineno noyywrap nounput %option prefix="flex_scanner_" %x verbatim_code options name_def sc_decl in_string sect2 pattern %x comment sect2prolog start_cond sect3 NL \r?\n OPTWS [[:blank:]]* WS [[:blank:]] NOT_WS [^[:blank:]\r\n] NAME [[:alpha:]_][[:alnum:]_-]* LEXOPT [aceknopr] REGEXOP [\*\.\+\?\/\^\(\|\)\]\[] NUMESCSEQ \\(([0-7]{1,3})|x([[:xdigit:]]{1,2})) CCL1 alnum|alpha|ascii|blank|cntrl|digit|graph CCL2 lower|print|punct|space|upper|xdigit CCL {CCL1}|{CCL2} %% int bracelevel=0; <INITIAL>{ ^"%{" generatePreProc(yytext); PUSH(verbatim_code); ^"%"[sx] generatePreProc(yytext); PUSH(sc_decl); ^"%option"