%{ #include #include "gram.tab.h" void echo(char *msg) { if (msg != NULL) fprintf(stderr, "[%s: %s]", msg, yytext); else fprintf(stderr, "[%s]", yytext); } void putStringVal() { yylval.string = malloc((yyleng + 1) * sizeof(char)); if (yylval.string == NULL) { perror("Probleme allocation yylval"); exit(EXIT_FAILURE); } strcpy(yylval.string, yytext); } %} %option yylineno HTML_OP <[hH][tT][mM][lL]> HTML_CL <\/[hH][tT][mM][lL]> HEAD_OP <[hH][eE][aA][dD]> HEAD_CL <\/[hH][eE][aA][dD]> BODY_OP <[bB][oO][dD][yY]> BODY_CL <\/[bB][oO][dD][yY]> PRE_OP <[pP][rR][eE]> PRE_CL <\/[pP][rR][eE]> I_OP <[iI]> I_CL <\/[iI]> P_OP <[pP]> P_CL <\/[pP]> BR <[bB][rR]>|<[bB][rR]\/> SPS [ \t] NL \n|\r H_OP <[hH][0-9]> H_CL <\/[hH][0-9]> LINK <[lL][iI][nN][kK][^>]*\/> SCRIPT_OP <[sS][cS][rR][iI][pP][tT][^>]*> SCRIPT_CL <\/[sS][cS][rR][iI][pP][tT][^>]*> AH_OP <[aA][ ]+[hH][rR][eE][fF][^>]*> AN_OP <[aA][ ]+[nN][aA][mM][eE][^>]*> A_CL <\/[aA]> CDIV_OP <[dD][iI][vV][ ]+[cC][lL][aA][sS][sS][^>]*> DIV_OP <[dD][iI][vV][^>]*> DIV_CL <\/[dD][iI][vV]> PURE_TEXT [^<]+ OTHERTAG_CL <\/[^>]+> OTHERTAG_OP <[^>]+> %% {SPS}|{NL} {HTML_OP} { putStringVal(); return HTML_OP;} {HTML_CL} { putStringVal(); return HTML_CL;} {HEAD_OP} { putStringVal(); return HEAD_OP;} {HEAD_CL} { putStringVal(); return HEAD_CL;} {BODY_OP} { putStringVal(); return BODY_OP;} {BODY_CL} { putStringVal(); return BODY_CL;} {PRE_OP} { putStringVal(); return PRE_OP;} {PRE_CL} { putStringVal(); return PRE_CL;} {I_OP} { putStringVal(); return I_OP;} {I_CL} { putStringVal(); return I_CL;} {P_OP} { putStringVal(); return P_OP;} {P_CL} { putStringVal(); return P_CL;} {BR} { putStringVal(); return BR;} {H_OP} { putStringVal(); return H_OP;} {H_CL} { putStringVal(); return H_CL;} {LINK} { putStringVal(); return LINK;} {SCRIPT_OP} { putStringVal(); return SCRIPT_OP;} {SCRIPT_CL} { putStringVal(); return SCRIPT_CL;} {AH_OP} { putStringVal(); return AH_OP;} {AN_OP} { putStringVal(); return AN_OP;} {A_CL} { putStringVal(); return A_CL;} {CDIV_OP} { putStringVal(); return CDIV_OP;} {DIV_OP} { putStringVal(); return DIV_OP;} {DIV_CL} { putStringVal(); return DIV_CL;} {PURE_TEXT} { echo("PURE_TEXT"); putStringVal(); return PURE_TEXT;} {OTHERTAG_CL} { echo("OTHERTAG_CL"); return OTHERTAG_CL;} {OTHERTAG_OP} { echo("OTHERTAG_OP"); return OTHERTAG_OP;} . fprintf(stderr, "!!%c!!", yytext[0]); %%