Pierre-Henry Soria – Articles en français sur la technologie et la vie intentionnelle

Créer son propre langage de programmation : par où commencer

Créer un langage de programmation paraît immense. Le projet devient plus clair lorsque l’on oublie un moment les classes, les modules et les bibliothèques pour commencer par une expression simple.

Un premier langage peut accepter ceci :

1let total = 4 + 5 * 2
2print total

Il suffit alors de transformer ce texte en étapes compréhensibles par le programme.

Définir une petite syntaxe

Décide d’abord ce que ton langage sait faire :

  1. des nombres ;
  2. quatre opérateurs ;
  3. des variables ;
  4. une commande d’affichage.

Écris quelques exemples valides et invalides. Ils deviendront les premiers tests du parser.

Découper le texte avec un lexer

Le lexer transforme les caractères en jetons. L’expression 4 + 5 devient par exemple :

1NUMBER(4), PLUS, NUMBER(5)

Cette étape gère les espaces, les nombres, les mots réservés et les symboles inconnus.

Construire un arbre syntaxique

Le parser vérifie l’ordre des jetons et produit un arbre syntaxique abstrait, souvent nommé AST.

Pour 4 + 5 * 2, l’arbre doit respecter la priorité de la multiplication :

1Add
2├── Number(4)
3└── Multiply
4    ├── Number(5)
5    └── Number(2)

Un bon parser retourne aussi une erreur lisible avec la ligne et la colonne concernées.

Interpréter ou compiler

La voie la plus courte consiste à parcourir l’AST et calculer le résultat. Tu obtiens alors un interpréteur.

Pour aller vers du code natif, LLVM fournit une représentation intermédiaire, un optimiseur et plusieurs cibles. Son tutoriel officiel My First Language Frontend with LLVM construit le langage Kaleidoscope en C++. Il couvre le lexer, le parser, l’AST, la génération LLVM IR, le JIT et les informations de débogage.

LLVM précise que ce tutoriel enseigne les techniques de compilation, pas toutes les pratiques d’architecture logicielle. C’est une distinction utile.

Le projet qui apprend vraiment

Je commencerais avec un interpréteur de quelques centaines de lignes, des tests et un REPL. J’ajouterais ensuite les variables, les fonctions, les conditions et des messages d’erreur plus précis.

Le but du premier langage n’est pas de remplacer Python ou C++. Il sert à comprendre comment un texte devient une action exécutée par une machine.


Pierre-Henry Soria

GitHub · PierreWriter.com · YouTube

<< Previous Post

|

Next Post >>

#Programmation #Compilateur #Llvm #Parser #Langage