J'ai d�j� quelques connaissances en th�orie des langages, mes cours ne sont pas trop loin... Je vais r�fl�chir aux automates � piles, je n'y avais pas pens�.
Le probl�me auquel je me confronte est un d�fi personnel plus qu'autre chose.
La r�alisation de l'interpr�teur en tant que tel n'est pas un probl�me majeur. Il s'agit d'avoir deux it�rateurs bien fichus (pointeur d'instruction et pointeur m�moire) et une liste d'op�rateur, puis de r�p�ter "ip.suivant(); ip.eval(m�moire);" jusqu'� terminaison du programme
Le parseur est plus complexe dans mon cas, puisque j'ai des discriminations importantes selon les langages.
D'o� l'id�e d'une classe de langage pour param�trer le parseur cr��.
J'obtiendrais ainsi les classes suivantes:
- m�moire
- m�moire::iterateur
- langage
- operateur
- des impl�mentations d'operateurs (plus ou moins parametrables)
- programme
- programme<?>
- programme<?>::iterateur
Parmi les subtilit�s apparaissant avec les grilles d'instructions (comme dans PATH), il y a les possibilit�s de parcourir des s�quences d'instructions dans les deux sens ou de voir plusieurs s�quences partagent une ou plusieurs instructions.
exemple de partage
1 \/\/\/|
2 aaaaaa\
3 bbbbbb/
\/\/\/
en entrant en 1 vers la droite, on a la s�quence abba abba abba abba abba abba, en ressortant en 1 vers la gauche
tandis qu'en commencant en 2 vers la droite on r�alise aaaaaa bbbbbb en sortant en 3 vers la gauche.
Cela dit, une grille creuse peut aussi servir dans d'autres contexte, tel que des jeux de plateaux.
Partager