Retour aux projets

RustedBrains

Projet d'apprentissage des compilateurs qui découpe en jetons un petit sous-ensemble de Rust, construit un AST et génère du Brainfuck à partir de variables, d'arithmétique, de contrôle de flux et d'instructions d'affichage.

PrototypeCode source disponibleTranspileur de Rust vers Brainfuck / 2025

Problème

Les concepts de compilation se comprennent mieux quand on les implémente de bout en bout, même face à un langage source volontairement minuscule et à un environnement d'exécution cible tout aussi réduit.

Solution

Construire une CLI en pur Rust qui lit la source, affiche une sortie de débogage, puis produit un fichier `.bf` via un lexer, un analyseur syntaxique, un modèle d'AST, un générateur et une couche d'erreurs.

Fonctionnalités clés

Lexer pour les identifiants, les entiers littéraux, les mots-clés, les opérateurs, les accolades, les parenthèses et les points-virgules
Analyseur à descente récursive avec précédence des expressions pour l'égalité, la comparaison, l'addition/soustraction et la multiplication/division
Modèle d'AST pour les liaisons let, les affectations, les appels d'affichage, les instructions if, les boucles while et les expressions binaires
Générateur Brainfuck avec allocation de cellules pour les variables, cellules temporaires, copie de valeurs, utilitaires arithmétiques et instructions de sortie
Erreurs de transpilation tenant compte de la position et gestion des échecs dans la CLI
Programmes d'exemple pour les variables simples, l'arithmétique et les comparaisons, et le contrôle de flux
Tests d'intégration pour la compilation, la création du fichier de sortie et la gestion d'un fichier manquant

Rôle

Petit projet personnel en Rust qui explore la construction de compilateurs à travers un transpileur en ligne de commande, d'une syntaxe de type Rust limitée vers Brainfuck.

Stack

RustCargoLexerRecursive Descent ParserASTCode GenerationBrainfuckCLI

Liens

Schéma d'architecture

Mermaid
flowchart LR
  Source["Fichier source d'un sous-ensemble de Rust"] --> CLI["CLI RustedBrains"]
  CLI --> Lexer["Lexer : jetons et erreurs de position"]
  Lexer --> Parser["Analyseur syntaxique à descente récursive"]
  Parser --> AST["AST : instructions et expressions"]
  AST --> Codegen["Générateur de code Brainfuck"]
  Codegen --> Memory["Cellules mémoire : variables et temporaires"]
  Memory --> Output["Fichier de sortie .bf"]
  Parser --> Debug["Sortie de débogage : jetons et AST"]
  Codegen --> Debug