J'ai réussi à obtenir le lexeur, le vérificateur de syntaxe et la sémantique et maintenant je veux passer à la génération de code intermédiaire. Le problème est que je ne sais pas comment gérer les expressions logiques. J'ai lu quelque chose sur E.true et E.false. Cet exemple est partout mais je ne l'ai pas compris.Les expressions logiques et la génération de code intermédiaire
Par exemple, si je le code suivant
if x>y and x<y or x == 1 then
//super duper code here
x = x+1
else
//super duper wow code here
y = y+1
endif
Le résultat doit être quelque chose comme ça
1: > x y 3
2: jmp _ _ 9
3: < x y 7
4: jmp _ _ 5
5: == x 1 _
6: jmp _ _ 9
7: + 1 x $1
8: = $1 _ x
9: + 1 y $2
10: = $2 _ y
mais les étiquettes pour les sauts ne sont pas connus jusqu'à ce que vous avez terminé en fait l'analyse de l'instruction if . Donc, je dois générer des quads, puis les backpatch. Comment puis-je le faire avec la grammaire de cette post? Est-ce que quelqu'un peut expliquer comment ça va aller parce que je suis vraiment confus.
Est-ce que l'étiquette de devoirs devrait aussi être ajoutée à cette question? – AusCBloke
@AusCBloke corrigé – Takatakas