zo iNiTiATiON SPEECHES
S01E13 2024-08-10

S01E13 — 10-08-2024.

Le Calme avant la TEMPÊTE..

jour 13.

Après pas mal de dépatouillage, de coup de poing dans le vide et surtout de frustration. J’ai réussi à sortir de la spirale infernale. La cause de tout ça ? Un appel de fonction self.next(); en trop dans le parser. Je ne sais pas combien de temps, j’ai galéré à trouver le bug, mais c’était trop long. Y’a pas à dire, la programmation, ça-rend-ouf ! Quand plus rien ne marche, sans savoir pourquoi et que chaque nouveau correctif échoue… c’est un truc à donner des coups de boule dans un mur. Bref.

J’ai rajouté des commandes supplémentaires à l’interface de ligne de commande du compilateur :

  • check — analyse la sémantique d’un programme.
  • license — affiche les licences logiciels.
  • version — affiche la version du compilateur zo.

J’ai introduit aussi la vérification de la convention de nommage du langage. C’est-à-dire que maintenant le compilo émettra des alertes non bloquantes lorsqu’il détectera une convention nommage qui n’est pas conforme au langage :

Les constantes

val FOO_BAR: int = 0;
  • valle nom d’une constante doit suivre la convention SNAKE_SCREAMING_CASE.

Les variables locales

imu bar_foo: int = 1;
mut oof_rab: int = 2;
  • imu, mutle nom d’une variable locale doit suivre la convention snake_case.

Les autres vérifications ne sont pas encore implémentées. Je me demande si je dois traverser mon arbre (AST) de haut en bas, de bas en haut ou avoir un graphe. Il y a encore des zones d’ombres par exemple si je déclare la variable suivante :

mut y: int[] = 1.0;

Je vais devoir effectuer une autre vérification à chaque fois que cette variable sera modifiée. Dans le cas d’une modification via un opérateur d’affectation y *= 3.0, l’identifiant y même si j’ai déjà vérifié qu’il respecte la convention de nommage snake_case. Il est possible que par manque d’attention j’écrive Y *= 3.0. Le Y n’est pas valide pour une variable locale. C’est pourquoi, je n’ai pas effectué l’implémentation complète de mon arbre. Je réfléchis encore à ce qui serait le plus adapté pour effectuer l’ensemble des vérifications nécessaires efficacement.

Si tu as des conseils à me donner là-dessus, n’hésite pas à m’envoyer un mail : the [at] compilords [dot] house.

@invisageable