7Fermer9
ZephLe 03/03/2009 à 17:12
À mon avis ta solution n'est pas mauvaise, on peut considérer chaque lexème comme étant caractérisé par deux informations :

- Son expression
- Son type (opérateur, identifiant, mot-clé...)

Le traitement se fait alors en deux passes : premièrement la récupération de l'expression, qui peut tout à fait se faire à coups de regexp et qui te permet de récupérer tes lexèmes un à un depuis le code source (à ce niveau-là, tu n'as encore aucune idée de leur type). Ensuite, pour chaque expression ainsi récupérée, tu peux avoir un deuxième mécanisme qui l'analyse pour déterminer son type. Ça n'est qu'au moment de cette seconde étape que la différence entre "aaa" (identifiant) et "begin" (mot-clé) apparaît.

Si tu programmes en objet, tu peux concevoir tout ça avec un superbe "LexemFactory" qui possède une méthode statique prenant une chaine de caractères (l'expression) et retournant le lexème correspondant. Reste à voir ce que ça donne une fois codé, mais sur papier ça me semble plutôt joli ^^