T09 · Ingénierie pratique CAKE© · Chapitre 1 / 11

Du concept à la machine

Le trajet complet d'une instruction C%, de la ligne tapée au résultat observé

Une idée d'architecture ne vaut que si elle survit au contact de la machine. Ce tome est le plus concret de la bibliothèque : il ouvre le moteur CAKE© réel, celui qui tourne aujourd'hui dans CakeLand, et suit une instruction depuis le moment où on la tape jusqu'au moment où elle produit un effet observable. Chaque exemple de ce tome a été exécuté dans le moteur avant d'être imprimé ; la sortie affichée est la sortie réelle, et l'empreinte indiquée permet à n'importe qui de vérifier que le texte n'a pas dérivé depuis.


Six étapes, toujours les mêmes

Quelle que soit la taille du programme, le moteur applique la même chaîne. Elle est courte, et c'est volontaire : une chaîne courte se vérifie.

La chaîne d'exécution CakeLang
  1. Lecture. Le source est lu tel quel. Les commentaires ?! et ?# sont retirés avant toute analyse : ils n'atteignent jamais l'arbre.
  2. Découpage. Le texte est découpé en jetons, et les blocs { } sont équilibrés avant d'aller plus loin.
  3. Reconnaissance. Le répartiteur cherche, à chaque position, le symbole le plus long connu parmi les 154 opcodes du noyau : =$! gagne sur =$.
  4. Construction. Chaque symbole est confié au contrôleur de sa famille (FLOW, DECL, IORC…), qui produit un nœud typé de l'arbre syntaxique.
  5. Exécution. L'interpréteur parcourt l'arbre, sous un budget d'instructions et, dans l'éditeur, en bac à sable.
  6. Observation. Les effets sortent par deux portes seulement : la console, et Cake.emit vers le visualiseur 3D.

Voici le plus petit programme qui traverse les six étapes. Il déclare une pression, la compare à un seuil et écrit un verdict.

Une instruction, six étapes

Source C% · t09c01-a.cake
?! Poste de survie 3 : controle du sas
=: pression=92.5%
=: seuil=95.0%
=$ (pression<seuil) {
  |> "Sas verrouille : pression insuffisante"%
}
Sortie réelle du moteur
Sas verrouille : pression insuffisante
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c01-a" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="pression" type="var" valeur="92.5"/>
        <declaration nom="seuil" type="var" valeur="95.0"/>
        <si condition="pression&lt;seuil">
          <alors>
            <bloc>
              <appel methode="println" args="&quot;Sas verrouille : pression insuffisante&quot;"/>
            </bloc>
          </alors>
        </si>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · =$ flux · |> entrées/sorties
nœuds d'arbre : déclaration, si, appel · empreinte d'arbre c18fb25166c414ef (reproductible : cake hash t09c01-a.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Ce que l'arbre garde, et ce qu'il oublie

Ouvrez le CXML sous l'exemple. Le commentaire a disparu. Le symbole =$ est devenu un nœud <si> avec sa condition ; |> est devenu un <appel> à println. C'est tout le propos du tome : le texte est une surface, l'arbre est la vérité. Deux sources qui diffèrent par la mise en page ou les commentaires produisent le même arbre et donc la même empreinte ; le chapitre 8 s'en sert pour industrialiser.

La porte d'observation

La deuxième sortie du moteur est géométrique. Cake.emit(x, y, z, t) transmet un point au visualiseur 3D de CakeLand. C'est ainsi qu'une trajectoire orbitale calculée en C% devient une courbe que l'on peut faire tourner à l'écran.

La seconde porte : Cake.emit

Source C% · t09c01-b.cake
?! Trois points d'approche d'un drone de ravitaillement
Cake.emit(0, 0, 0, 0)%
Cake.emit(32, 18, 8, 1)%
Cake.emit(64, 11, 25, 2)%
|> "Projection prete"%
Sortie réelle du moteur
Projection prete
[3 point(s) transmis au visualiseur par Cake.emit]
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c01-b" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <code-brut><![CDATA[Cake.emit(0, 0, 0, 0)%
Cake.emit(32, 18, 8, 1)%
Cake.emit(64, 11, 25, 2)%]]></code-brut>
        <appel methode="println" args="&quot;Projection prete&quot;"/>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : |> entrées/sorties · bibliothèque : Cake.emit
nœuds d'arbre : code brut, appel · empreinte d'arbre 161e86476cfc6e36 (reproductible : cake hash t09c01-b.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.
Principe clé du chapitre

Une instruction C% n'existe vraiment qu'une fois devenue un nœud d'arbre. Tout ce que le moteur exécute, vérifie ou transmet part de cet arbre, et de lui seul.

→

Le chapitre suivant ouvre le moteur pièce par pièce et met un nom réel sur chacun de ses organes.

← Chapitre précédent T08 · C11 · Synthèse : gouverner les architectures
T09 · C01 / 11
Chapitre suivant → C02 · Anatomie d'un moteur CAKE©
CAKE© Library  ·  Sébastien Roy  ·  CEO, UniBool Inc.  ·  Canada  ·  Édition 2026