Je réponds sans doute un peu tard...
Il me semble qu'un moyen simple de faire un compilateur est d'utiliser
un automate à états finis associé à une matrice à états finis (je pense
que tu peux regarder sur google pour plus d'informations)
En gros, tu as une matrice (un tableau) qui représente donne l'état suivant en fonction de l'évenement.
Ton automate se sert de cette matrice pour faire les actions en conséquences.
Exemple:
matrice
'f' 'o' 'r'
etat0 0 0 0
etat1 2 0 0
etat2 0 3 0
etat3 0 0 4
etat4 .....
l'état 0 correspond à 'erreur de parsing'
l'état 4 correspond à 'on vient de trouver le mot clé for'
Avec un automate et une matrice bien faite tu dois pouvoir parser le
code facilement et sortir le déroulement du programme écrit.