Bonsoir,
Après avoir refais un tour d’horizon des différentes phases de compilation, j’ai (encore, et toujours) de nouvelles questions. La première concerne l'analyse syntaxique. Celle-ci unifie les tokens vraisemblablement à la grammaire établie. Pour les affectations de variables, en partant des tokens suivants:
[Ident('a'), Equal, Number(2)]
On obtient ça:
Affectation('a', 2)
Jusque-là, c’est simple. Cependant, transformer une condition if
de la même façon que pour l’affectation ci-dessus est un mystère pour moi. Hypothèse 1, il faudrait créer un objet If
(tout comme Affectation
) qui contiendrait, sous forme d’objet, le code contenue dans la condition. Ça me parait déraisonable, mais je préférai quand même exposer cette hypothèse. Hypothèse 2, If
serait un bloc tel que Equal
qui serait suivit des objets formants le code de la condition en question, auquel cas, je me demande de quelle façon on sait quand le code de la condition s’arrête (j’en profite pour mentionner le repository de mon futur langage qui contient pour l’instant un aperçue de ce à quoi il ressemblera. En l’occurrence, mon langage, Higgs, sera un dialecte de Lisp. Par la même occasion, en vous basant sur les exemples de code de mon repo, pouvez-vous me dire comment je devine quand le code d’une condition se termine?).
Cordialement.