#Slides - Compilation & WASM
Dix diapositives, une par étape du pipeline. Chacune reprend le même programme fil conducteur 2*(3+4)-5 et montre l'artefact exact produit par l'étape.
- Du texte aux tokens: l'entrée et la sortie du lexer, dix tokens dont
EOF; plus long match sur<=face à<. - Grammaire et parseur: la grammaire EBNF d'Expr en trois règles (expression, terme, facteur); pourquoi la précédence vit dans la grammaire, pas dans le code.
- AST: l'arbre
('-', ('*', 2, ('+', 3, 4)), 5)dessiné avec positions source; un message d'erreur pointé sur la colonne fautive. - Sémantique: vérification des types et des variables déclarées sur le même arbre; l'erreur « variable non déclarée » levée avant toute exécution.
- IR à pile: la traduction
push 2; push 3; push 4; add; mul; push 5; subpas à pas, pile dessinée après chaque instruction. - Constant folding: le même IR après repli des constantes,
push 19; quand s'arrêter (effets de bord, débordements). - Codegen WASM: le module WAT final avec
(func (export "main") (result i32) i32.const 19); la chaîne compile, valide, instancie, appelle. - Modèle d'exécution WASM: types i32/i64/f32/f64, pile typée, bac à sable sans disque ni réseau.
- Limites et sécurité: mémoire linéaire bornée, entiers qui bouclent silencieusement (i32), pas de GC ni de threads sans SharedArrayBuffer et COOP/COEP.
- Debug et instrumentation: source maps,
console.logvia imports,wasm-objdumpsur le binaire produit.
Bon usage: chaque diapositive doit montrer un artefact (tokens, arbre, pile, WAT) plutôt qu'une liste de définitions; la dernière ligne de chaque slide donne la commande ou le playground qui rejoue l'étape.