S01E07 — 04-08-2024.
Le bilan.
jour 7.
Petit bilan de cette première semaine — finalement, j’ai vachement bien avancé, mon compilateur est capable d’effectuer les calculs arithmétiques de bases +, -, *, /, % ces opérations sont applicables pour les nombres entiers 1, 42, 1_000_000 ainsi que pour les nombres flottants 0.5, 3.1416, 1.234_567_89. On est bien là.
J’ai poursuivi sur ma lancée pour que mon compilo puisse supporter les tableaux [1, 2, 3], [0.0, 0.0, 0.0]. Puis j’ai enchaîné avec les variables avec trois types.
Une variable globale dit constante :
val x: int = 0;
Une variable locale immuable :
imu y: int = 0;
Ainsi qu’une variable mutable :
mut z: int = 0;
Tu remarqueras le typage. Dans la foulée, je me suis motivé pour l’intégrer. J’étais tellement déter que j’ai essayé d’aller jusqu’à l’inférence de type en suivant les traces de typical (je t’en avais parlé hier). Je me suis mangé un gros mur. J’ai laissé tout ça, en suspens, parce que je ne vois pas encore comment intégré le tout avec mon système de type et par manque de connaissance sur cette partie. Je verrai ça plus tard, revenons plutôt au typage actuel. Donc, nous avons côté type primitif.
Le type unit :
()— cette unité de valeur est utilisé comme une valeur par défaut. Comme Ocaml, Rust, etc.
L’inférence :
:=— ce symbole permet de dire au compilateur d’inférer le type.
Les nombres :
entiers
ints8,s16,s32,s64,s128u8,u16,u32,u64,u128
flottants
floatf32,f64
Les tableaux :
[]— à savoir que seul ça ne fonctionnera pas. Il faut préciser le type du tableau.int[]— ici je déclare un tableau de nombres entiers.int[4]— ici je déclare un tableau de nombres entiers en spécifiant la taille du tableau.
Je l’avoue, je kiffe grave cette syntaxe.
Il me reste encore beaucoup à faire comme l’alias, les fonctions, les closures, les caractères unicode, les chaînes de caractères, les appels de fonction, les structures, les méthodes et j’en passe. Néanmoins, j’ai une base plus consistante pour un début de langage jouet.
J’oubliais que côté parser, j’ai intégré l’assignation et les opérateurs qui vont bien +=, ’-=’, ’*=’, ’/=’, ’%=’, etc. Cependant, je dois implémenter le tout côté tokenizer.
Pour conclure, très satisfait de ma semaine. Seulement, toi et moi savons bien que tout ceci ne va pas durer. D’avance, je crains mes articles colériques — Mouahahahahahaha.