Skip to content

sanndobtg/BateLang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BateLang

BateLang est un langage de programmation expérimental que j’ai développé dans le but de comprendre en profondeur le fonctionnement d’un langage : du code source jusqu’à son exécution.
Il s'agit d'un projet pédagogique qui regroupe un lexer, un parser, un générateur d'AST et un interpréteur.


Objectifs

  • Apprendre les bases de la construction de langage (compilation/interprétation).
  • Développer un projet structuré en C++ moderne.
  • Comprendre les étapes réelles derrière un langage comme C, C++, GO etc.
  • Acquérir une expérience concrète.

Fonctionnalités implémentées

  • Lexer : découpe le code source en tokens (let, if, x, >, ;, etc.).
  • Parser : transforme les tokens en un AST structuré.
  • AST (Arbre de Syntaxe Abstrait) : représente le code de manière hiérarchique.
  • Interpréteur : exécute le code contenu dans l'AST.
  • Instructions supportées :
  • let x = 10; : déclaration de variable
  • x = x - 1; : réaffectation
  • print(x); : affichage
  • if (...) { ... } : conditionnelle
  • while (...) { ... } : boucle
  • Expressions arithmétiques avec priorité (+, -, *, /, ==, <, >)

Compilation

Assurez-vous d’avoir un compilateur C++ (g++ recommandé).

Compiler :

g++ -std=c++17 main.cpp lexer.cpp parser.cpp AST.cpp interpreter.cpp -o batelang

###  Exécuter :
```bash
./batelang

Le programme exécute un code source intégré dans main.cpp.
Un exemple d'interpréteur interactif (REPL) viendra plus tard.

---

##  Exemple de code BateLang :

let x = 10;

if (x > 5) {
    print(x);
}

while (x > 0) {
    x = x - 1;
    print(x);
}

###  Résultat attendu :

10
9
8
7
6
5
4
3
2
1
0

---

##  Structure du projet :

src/
    lexer.hpp / lexer.cpp        → Génère les tokens à partir du code source
    parser.hpp / parser.cpp      → Construit l’AST
    AST.hpp / AST.cpp            → Définit la structure des nœuds d’AST
    interpreter.hpp / .cpp       → Évalue et exécute l’AST
    main.cpp                     → Fichier principal de test


---

## Inspirations

- les bases du language C en grande partie
- Ma curiosité sur les compilations/interpréteurs depuis le début de cette aventure informatique

---

## Prochaines pistes d'amelioration

- Ajouter le support des chaînes ("texte")
- Fonctions définies par l'utilisateur
- Fichiers en entrée (au lieu de hardcoded dans main)
- Interpréteur interactif (REPL)
- Ajout d’un système de types (bool, string, int)
- Génération de bytecode ou de C intermédiaire (compilation réelle)

---

##  Contribuer 

Il s'agit d’un projet personnel, mais toute contribution est la bienvenue.
Les idées, suggestions ou PR sont ouvertes.

---

##  Licence 

Ce projet est open-source, disponible sous licence MIT.

---

Merci d’avoir lu jusqu’ici !
J’espère que vous avez apprécié ce projet autant que j’ai pris plaisir à le développer jusqu'ici.

---

About

My own programming language, in progress...

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors