%{
/* une grammaire simplifiée pour HTML
* Les commentaires ne sont pas envoyés à Yacc.
* Aucune restriction sur les textes.
*/
%}
%option noyywrap
%s COMMENT
SPACE [ \t\n]*
TEXTE [^<]*
CHAINE ({TEXTE}|{SPACE})*
B_HTML_O {SPACE}\<[hH][tT][mM][lL]\>{SPACE}
B_HEAD_O {SPACE}\<[hH][eE][aA][dD]\>{SPACE}
B_TITLE_O {SPACE}\<[tT][iI][tT][lL][eE]\>{SPACE}
B_BODY_O {SPACE}\<[bB][oO][dD][yY]\>{SPACE}
B_H1_O {SPACE}\<[hH]1\>{SPACE}
B_H2_O {SPACE}\<[hH]2\>{SPACE}
B_H3_O {SPACE}\<[hH]3\>{SPACE}
B_H4_O {SPACE}\<[hH]4\>{SPACE}
B_H5_O {SPACE}\<[hH]5\>{SPACE}
B_H6_O {SPACE}\<[hH]6\>{SPACE}
B_EM_O {SPACE}\<[eE][mM]\>{SPACE}
B_B_O {SPACE}\<[bB]\>{SPACE}
B_P_O {SPACE}\<[pP]\>{SPACE}
B_OL_O {SPACE}\<[oO][lL]\>{SPACE}
B_LI_O {SPACE}\<[lL][iI]\>{SPACE}
B_HTML_F {SPACE}\<\/[hH][tT][mM][lL]\>{SPACE}
B_HEAD_F {SPACE}\<\/[hH][eE][aA][dD]\>{SPACE}
B_TITLE_F {SPACE}\<\/[tT][iI][tT][lL][eE]\>{SPACE}
B_BODY_F {SPACE}\<\/[bB][oO][dD][yY]\>{SPACE}
B_H1_F {SPACE}\<\/[hH]1\>{SPACE}
B_H2_F {SPACE}\<\/[hH]2\>{SPACE}
B_H3_F {SPACE}\<\/[hH]3\>{SPACE}
B_H4_F {SPACE}\<\/[hH]4\>{SPACE}
B_H5_F {SPACE}\<\/[hH]5\>{SPACE}
B_H6_F {SPACE}\<\/[hH]6\>{SPACE}
B_EM_F {SPACE}\<\/[eE][mM]\>{SPACE}
B_B_F {SPACE}\<\/[bB]\>{SPACE}
B_P_F {SPACE}\<\/[pP]\>{SPACE}
B_OL_F {SPACE}\<\/[oO][lL]\>{SPACE}
B_LI_F {SPACE}\<\/[lL][iI]\>{SPACE}
%%
\-\> {BEGIN(INITIAL);}
. {}
{B_HTML_O} {yylval.texte=strdup(yytext);return HTML_O;}
{B_HTML_F} {yylval.texte=strdup(yytext);return HTML_F;}
{B_HEAD_O} {yylval.texte=strdup(yytext);return HEAD_O;}
{B_HEAD_F} {yylval.texte=strdup(yytext);return HEAD_F;}
{B_TITLE_O} {yylval.texte=strdup(yytext);return TITLE_O;}
{B_TITLE_F} {yylval.texte=strdup(yytext);return TITLE_F;}
{B_BODY_O} {yylval.texte=strdup(yytext);return BODY_O;}
{B_BODY_F} {yylval.texte=strdup(yytext);return BODY_F;}
{B_H1_O} {yylval.texte=strdup(yytext);return H1_O;}
{B_H1_F} {yylval.texte=strdup(yytext);return H1_F;}
{B_H2_O} {yylval.texte=strdup(yytext);return H2_O;}
{B_H2_F} {yylval.texte=strdup(yytext);return H2_F;}
{B_H3_O} {yylval.texte=strdup(yytext);return H3_O;}
{B_H3_F} {yylval.texte=strdup(yytext);return H3_F;}
{B_H4_O} {yylval.texte=strdup(yytext);return H4_O;}
{B_H4_F} {yylval.texte=strdup(yytext);return H4_F;}
{B_H5_O} {yylval.texte=strdup(yytext);return H5_O;}
{B_H5_F} {yylval.texte=strdup(yytext);return H5_F;}
{B_H6_O} {yylval.texte=strdup(yytext);return H6_O;}
{B_H6_F} {yylval.texte=strdup(yytext);return H6_F;}
{B_EM_O} {yylval.texte=strdup(yytext);return EM_O;}
{B_EM_F} {yylval.texte=strdup(yytext);return EM_F;}
{B_B_O} {yylval.texte=strdup(yytext);return B_O;}
{B_B_F} {yylval.texte=strdup(yytext);return B_F;}
{B_P_O} {yylval.texte=strdup(yytext);return P_O;}
{B_P_F} {yylval.texte=strdup(yytext);return P_F;}
{B_OL_O} {yylval.texte=strdup(yytext);return OL_O;}
{B_OL_F} {yylval.texte=strdup(yytext);return OL_F;}
{B_LI_O} {yylval.texte=strdup(yytext);return LI_O;}
{B_LI_F} {yylval.texte=strdup(yytext);return LI_F;}
{CHAINE} {yylval.texte=strdup(yytext);return CHAINE;}
\< {yylval.texte=strdup(yytext);return CHAINE;}
%%