En fait je pense que ce n'est pas la bonne approche.
On peut considérer que un fichier est une suite de tokens.
Un token peut être entre autres un nom.
un nom est constitué comme suit : _[a-z][A-Z]([0-9]_[a-z][A-Z])*
Cela, c'est facile à faire sous flex, il te reste ensuite plus que à règler le cas des commentaires /* si alors sinon */ et des chaines constantes "si alors sinon"
Une fois que tu as isolé ces noms parmi tes token, il suffit de voir si ce nom est un mot réservé (si, alors, sinon, ...) et de le colorier en conséquence.
Donc en fait, tu utilises flex pour séparer ton flux d'entrée et ensuite une table de hach pour savoir si ce mot est un mot réservé.
Attention toutefois avec une table de hash. Il est possible (bien que peu probable mais ce qui peut arriver, arrivera, c'est Murphy qui le dit

) que tu tombes par hasard sur un mot qui à le même hash qu'un autre (collision de hash).
Partager