Lancement du projet
Créer un langage de programation ?
Projet qui me travaille depuis des années, avec de nombreux essais (plus ou moins réussis).
Mais là nous sommes sur quelque chose! De fonctionnel!
M'étant mis au go il y a quelques semaines, j'ai vu que ce langage permettait la création d'autres langages "facilement" (on relativisera cet aspect)...
Alors, pourquoi ne pas essayer?
Donc, mi décembre, je commence à expérimenter, un peu en ordre dispersé et "profitant" d'un lumbago qui m'empêche de faire autre chose (ou presque), je me lance.
Le premier commit sur github a été fait le 24 décembre 2025 (oui, ça aurait du être dès le premier jour).
Mais on retiendra cette date comme date de naissance officielle du langage!
Présentation générale
Le "Richnou lang" est donc un langage qui permet de générer des PNG à partir de directives graphiques. Fortement inspiré de Processing et P5js.
Pour l'instant limité au cercle, et la gestion des couleurs, voici un petit "hello world".
canvas(600, 400, "#EEEEEE");
circle(300, 200, 180, stroke="#000000", fill="#FFA000", weight=4);
save("hello-world.png");

Pas simplement un cercle...
Il est assez complet et permet déjà de:
- créer des variables, fonctions (récursion possible)
- boucles for / while, conditions, break/continue
- fonctions internes (cos, sin, rand...)
- quelques constantes (PI, TAU,...)
- afficher dans la console (on peut donc s'en servir potentiellement pour de nombreuses choses)
- paramètres nommés (ou non)
circle(radius=5, x=10, y=10)oucircle(10, 10, 5) - autodocumenté (aide, génération de l'EBNF ou l'AST d'un script...)
Bien sûr, il reste pas mal de travail (j'espère le rectangle à court terme...)
Dans les challenges à inclure dans le processus:
- colorisation syntaxique pour VSCode
- une version pédagogique en français
- une version wasm pour le navigateur
A suivre...
Saines lectures:
- Writing An Interpreter In Go (https://interpreterbook.com)
- Package "participle" ( https://github.com/alecthomas/participle ) pour créer le lexer, le parser, l'AST...