Bonjour à tous,

Je dois utiliser l'outil lex (flex) pour produire à partir d'un fichier source C/C++ une page HTML respectant le formatage initial (retours ligne, indentation) et mettant en relief mots-clés, instructions du pré-processeur, chaînes de caractères et commentaires.

Je débute avec cet outil, et je bloque sur les directives pré-processeurs à traduire contenant le caractère '<' qui doit être traduit en "&lt;", voici les règles que j'ai créées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[<] { puts( "&lt;" ); }
#[^\n]* { printf( "<font color=\"blue\">%s</font>\n" , yytext ); }
Mais ça ne fonctionne pas, j'obtiens en sortie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<font color="Blue">#include <fifo.h></font><font color="Blue">#define NVOISINS 8</font>&lt;&lt;
Pourquoi les "&lt;" sont-ils placés à la fin ? Comment résoudre le problème ?

Merci beaucoup !