%{
/* une grammaire simplifiée pour HTML
* une restriction sur les mots des phrases,
* les caractères "<" et ">" sont interdits.
* Les commentaires sont inclus dans les "TOKENS" pour pouvoir
* être envoyés à Yacc sans les inclure dans la grammaire.
*/
%}
%option noyywrap
SPACE [ \t\n]*
COMMENT \])|[^\-])*-\>
TEXTE [^<>]*
INUTILE ({SPACE}|{COMMENT})*
CHAINE ({TEXTE}|{INUTILE})*
B_HTML_O {INUTILE}\<[hH][tT][mM][lL]\>{INUTILE}
B_HEAD_O {INUTILE}\<[hH][eE][aA][dD]\>{INUTILE}
B_TITLE_O {INUTILE}\<[tT][iI][tT][lL][eE]\>{INUTILE}
B_BODY_O {INUTILE}\<[bB][oO][dD][yY]\>{INUTILE}
B_H1_O {INUTILE}\<[hH]1\>{INUTILE}
B_H2_O {INUTILE}\<[hH]2\>{INUTILE}
B_H3_O {INUTILE}\<[hH]3\>{INUTILE}
B_H4_O {INUTILE}\<[hH]4\>{INUTILE}
B_H5_O {INUTILE}\<[hH]5\>{INUTILE}
B_H6_O {INUTILE}\<[hH]6\>{INUTILE}
B_EM_O {INUTILE}\<[eE][mM]\>{INUTILE}
B_B_O {INUTILE}\<[bB]\>{INUTILE}
B_P_O {INUTILE}\<[pP]\>{INUTILE}
B_OL_O {INUTILE}\<[oO][lL]\>{INUTILE}
B_LI_O {INUTILE}\<[lL][iI]\>{INUTILE}
B_HTML_F {INUTILE}\<\/[hH][tT][mM][lL]\>{INUTILE}
B_HEAD_F {INUTILE}\<\/[hH][eE][aA][dD]\>{INUTILE}
B_TITLE_F {INUTILE}\<\/[tT][iI][tT][lL][eE]\>{INUTILE}
B_BODY_F {INUTILE}\<\/[bB][oO][dD][yY]\>{INUTILE}
B_H1_F {INUTILE}\<\/[hH]1\>{INUTILE}
B_H2_F {INUTILE}\<\/[hH]2\>{INUTILE}
B_H3_F {INUTILE}\<\/[hH]3\>{INUTILE}
B_H4_F {INUTILE}\<\/[hH]4\>{INUTILE}
B_H5_F {INUTILE}\<\/[hH]5\>{INUTILE}
B_H6_F {INUTILE}\<\/[hH]6\>{INUTILE}
B_EM_F {INUTILE}\<\/[eE][mM]\>{INUTILE}
B_B_F {INUTILE}\<\/[bB]\>{INUTILE}
B_P_F {INUTILE}\<\/[pP]\>{INUTILE}
B_OL_F {INUTILE}\<\/[oO][lL]\>{INUTILE}
B_LI_F {INUTILE}\<\/[lL][iI]\>{INUTILE}
%%
{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;}
%%