S01E29 — 26-08-2024.
syntaxologie.
jour 29.
Je constate que plus tu es en mode ultra focus sur un projet, plus tu arrives à ressembler les pièces du puzzle. Tu vas avoir le temps de réfléchir une centaine de fois sur la même question, chercher des articles, des technologies, les comparer, faire des benchmarks, prototype des concepts isolés, réécrire les parties perfectibles, etc.
Lorsque j’ai commencé à écrire des compilos, j’étais terrorisé par l’idéé de devoir écrire une table des symboles, un curseur, de devoir collecter l’emplacement d’un jeton dans un fichier source, de compiler. Aujourd’hui, rien de tout ça, je n’ai plus peur de rien SAUF de la partie optimisation du compilateur. Je n’y comprends rien de chez rien. Il y a aussi la création des représentations intermédiaires dont je comprends vaguement ce que c’est, mais pouvoir de dire à quel moment dans la compilation, je dois les créer. Je suis in-ca-pa-ble de le faire. Et tu sais quoi, peu m’en chaut ! Je peux tout de même coder le principal d’une idée qui jaillit de mon esprit. En voici des nouvelles en vracs qui sont presque toutes supportées au niveau du Tokenizer.
-zsx
- fragments.
Ce noeud est dorénavant supporté. Et va permettre un peu de flexibilité dans l’écriture de programme en mode zsx.
<></>
-roadmap
- styles
Une nouvelle syntaxe pour styliser les feuilles de styles en cascades. Normalement d’après l’univers graphique de ma syntaxe, je ne devrais pas avoir une syntaxe de ce type. Les délimiteurs sont pour la plupart in-vi-si-ble. Chose qui de par essence n’est pas pareil que le langage en mode Program. Après quelques tests, j’ai vite remarqué le potentiel de cette syntaxe mariée avec les autres syntaxes. Je t’avoue qu’un joli turfu s’en dégage.
#css .btn
display: block
background: #b2f5ea
padding-left: 4px
padding-right: 4px
css .btn:hover
background: #81e6d9
;
;
Dans cette syntaxe, l’indentation prime. J’imagine même implémenter un Formatter capable de compiler du css, scss en mon format de style. Ce qui me permettrait de rapidement transformer des projets webs dans mon langage lorsque tout sera supporté. La meta macro #css serait en réalité un transpilateur temps réel. Je lui file ça :
#css
// this is my css or scss code.
.my-css-class {
width: 100px;
height: 100px;
border: solid 3px black;
}
;
Et il va me le formater comme ceci :
#css
-- this is my css or scss code.
.my-css-class
width: 100px
height: 100px
border: solid 3px black;
;
Pouaalala, tellement le turfu.
-atoms
J’introduis aussi les atomes, imagine-toi qu’il s’agit de simple mots clés qui vont permettre d’ajouter de la mécanique au langage de balisage. Pour l’instant, j’ai une petite liste — plus c’est petit mieux c’est. Plus facile à mémoriser :
<:> <:?> <:bind> <:else> <:for>
<:if> <:me>
Je vais pouvoir glisser sur le web avec ma planche de surf à la composition atomique 47, tah le nuage supersonique :
fun main() {
mut count = 0;
imu bar ::= <:if true>
<button :click={fn() -> count += 1}>{count}</button>
<:>;
#dom bar;
}
Tu ne commences pas à le sentir ce quaalude de mahboul ? Je ne m’en lasse plus d’humer son odeur, tellement ça sent le turfu à pleine narines. Avec le concept d’atomes, je vais pouvoir rajouter de la réactivité faire un truc bien sympathique. Derrière, je n’ai qu’à compiler vers la plateforme de mon choix. Je veux faire une application PC — une ligne de commande. J’envisage de prototyper une application web — une ligne de commande. Je veux du multi-platform — une ligne de commande. T’as compris la vibe.
«
Sim-pli-ci-té, ex-pre-ssi-vi-té pi-men-té. Pa-sse par un fra-me-work bi-en ci-men-té.
»