AlgoLab est un interpreteur pedagogique d un pseudo code avec une grammaire definie sous Lark. Le coeur est compose d un lexer, d un parser, d un AST et d un interpreteur, avec un systeme d erreurs clair.
L organisation suivante regroupe le code, la documentation et les tests pour rester lisible et evolutif.
AlgoLab/
├── README.md
├── docs/
│ ├── 01_vision_et_scopes.md
│ ├── 02_grammaire.md
│ ├── 03_ast.md
│ ├── 04_architecture_interpreteur.md
│ ├── 05_memoire_et_types.md
│ └── 06_diagnostics.md
├── src/
│ └── algolab/
│ ├── __init__.py
│ ├── lexer.py
│ ├── parser.py
│ ├── ast_nodes.py
│ ├── interpreter.py
│ ├── environment.py
│ ├── errors.py
│ └── main.py
├── examples/
│ ├── hello_world.algo
│ ├── conditions.algo
│ ├── boucles.algo
│ └── fonctions.algo
└── tests/
├── test_lexer.py
├── test_parser.py
├── test_interpreter.py
├── test_types.py
└── test_errors.py
La documentation actuelle decrit deja les modules suivants, proposes ici sous src/algolab:
- lexer.py: generation des tokens via la grammaire Lark.
- parser.py: construction de l AST a partir des tokens.
- ast_nodes.py: classes de noeuds ou documentation de la structure AST.
- interpreter.py: visite des noeuds et execution.
- environment.py: gestion des portees et variables.
- errors.py: exceptions et messages pedagogiques.
- main.py: point d entree.
Le fichier existant peut etre place dans docs/05_memoire_et_types.md. La documentation est separee en chapitres courts pour faciliter la navigation.
- 01_vision_et_scopes.md: objectifs du langage et perimetre.
- 02_grammaire.md: specification EBNF et mots cles.
- 03_ast.md: description de l AST et transformation.
- 04_architecture_interpreteur.md: modules et flux.
- 05_memoire_et_types.md: pile d environnements et types.
- 06_diagnostics.md: erreurs, format des messages, exemples.
- Noms de fichiers en snake_case.
- Un seul point d entree dans main.py.
- Regles de typage de base dans interpreter.py ou environment.py.
- Messages d erreurs centralises dans errors.py.
- Deplacer la documentation existante dans docs/.
- Creer le package src/algolab/ et separer les modules.
- Ajouter des exemples .algo pour les cas courants.
- Ajouter des tests unitaires par sous systeme.
Le document 5. Gestion de la Memoire et des Types alimente directement docs/05_memoire_et_types.md.