← Tous les projets

Systèmes

Mini-langage

Analyse avec Flex/Bison, évaluation en OCaml, arbre syntaxique affiché.

Terminé Sprint S11-S12 · 8 points
En bref, sans jargon pour les non-informaticiensLire le résuméRefermer
Ce que c'est
Un petit langage de programmation inventé pour l'occasion, « Maille », qui sait décrire des objets 3D, et l'outil qui exécute ses programmes dans la page.
À quoi ça sert
Comprendre de l'intérieur comment fonctionnent les langages dans lesquels on programme.
Ce que ça montre
Des notions avancées d'informatique, enseignées à l'université, mises en pratique de bout en bout.

Enseigné en L2 (théorie des langages)

Code source

Comment les morceaux tiennent ensemble

Schéma : Programme Maille → Analyseur (lu) ; Analyseur → Arbre syntaxique (écrit) ; Arbre syntaxique → Interpréteur ; Interpréteur → Résultat (infère, évalue) ; Navigateur → Résultat (les deux, chez le visiteur). lu écrit infère, évalue les deux, chez le visiteur Programme Maille texte Analyseur C, Flex, Bison Arbre syntaxique S-expression Interpréteur OCaml, Hindley-Milner Résultat valeur et type Navigateur WebAssembly, js_of_ocaml

Essayer Maille dans le navigateur

Le programme est analysé par l'analyseur C (Flex et Bison) compilé en WebAssembly, puis typé et évalué par l'interpréteur OCaml compilé en JavaScript : rien ne quitte votre navigateur.

Exemples :

Ctrl+Entrée (⌘+Entrée sur Mac) pour exécuter. Maillages : torus, sphere, cylinder (résolution de 3 à 256), union ; invariants : vertices, edges, faces, euler, boundary_loops, components, genus.

Arbre syntaxique

Produit par l'analyseur C. Chaque nœud indique sa ligne et sa colonne ; cliquez dessus pour placer le curseur à cet endroit du programme.

Technologies

  • Flex
  • Bison
  • OCaml
  • C

Qui fait quoi

Flex
Le lexer de Maille : mots, nombres, chaînes, positions en caractères UTF-8, erreurs lexicales nommées.
Bison
La grammaire, sans aucun conflit, qui construit l'arbre syntaxique situé.
OCaml
L'interpréteur : inférence de types Hindley-Milner et évaluation ; compilé en JavaScript par js_of_ocaml pour la fiche.
C
L'analyseur réentrant autour de Flex et Bison, compilé en WebAssembly par Emscripten pour la fiche.

Definition of Done

  • Code relu, diff par diff
  • Tests unitaires et d'intégration verts
  • CI verte sur Linux, Windows et macOS si compilé
  • README, REVIEW.md et DECISIONS.md à jour
  • Textes en français et en anglais
  • Démo déployée et testée sur mobile