CLI — Interface en ligne de commande¶
Syntaxe générale¶
Flags globaux (sans sous-commande) :
Pour les commandes de compilation/analyse (build, run, compiler, vérifier, parser, lexer), vous pouvez aussi choisir le format des diagnostics :
Source de vérité (anti-dérive)¶
Source autoritaire :
- implémentation CLI : src/main.rs (analyser_arguments + afficher_aide) ;
- rendu utilisateur : cargo run --quiet -- aide.
python3 test_docs.py vérifie automatiquement que les tableaux suivants restent alignés avec la CLI réelle.
| Commande | Alias |
|---|---|
build |
b |
run |
r |
repl |
— |
compiler |
comp, c |
init |
nouveau |
add |
ajouter |
upgrade |
maj |
lock |
verrou |
lexer |
lex |
parser |
parse, p |
vérifier |
verifier, v |
ir |
— |
doc |
documentation |
debug |
débogue, debogue |
aide |
help, -h, --help |
version |
-V, --version |
| Option | Portée |
|---|---|
-o, --output |
build, compiler, doc |
-r, --release |
build, run, repl |
--diagnostics-format |
build, run, compiler, vérifier, parser, lexer |
-h, --help |
globale |
-V, --version |
globale |
Vue rapide¶
| Besoin | Commande |
|---|---|
| Exécuter un fichier | galois run fichier.gal |
| Compiler un binaire | galois build fichier.gal |
| Boucle interactive | galois repl |
| Vérifier les types | galois vérifier fichier.gal |
| Voir l'AST | galois parser fichier.gal |
| Générer la doc | galois doc fichier.gal |
| Voir la version | galois --version |
| Mettre à jour une dépendance | galois upgrade paquet version |
| Régénérer le lockfile | galois lock |
Commandes¶
build / b — Compiler vers un exécutable natif¶
| Option | Description |
|---|---|
-o, --output |
Nom du fichier de sortie |
-r, --release |
Compilation optimisée (O3) |
--diagnostics-format |
Format des diagnostics (humain par défaut, json pour l'intégration outillage/IDE) |
Exemples :
# Compilation debug
galois build programme.gal
# Compilation optimisée
galois build programme.gal --release
# Nom de sortie personnalisé
galois build programme.gal -o mon_app
galois build programme.gal --diagnostics-format json
run / r — Compiler et exécuter¶
Compile le programme puis l'exécute immédiatement.
Le binaire utilisé par run est temporaire et supprimé automatiquement après exécution.
galois run programme.gal
galois run programme.gal -r
galois run programme.gal --diagnostics-format json
repl — Boucle interactive¶
Lance une boucle interactive pour saisir des lignes Galois et exécuter le buffer courant.
Le prompt suit le style Python: >>> pour une nouvelle entrée et ... pour une continuation de bloc.
Dans la REPL interactive: Entrée ajoute une ligne au buffer, Shift+Entrée exécute le buffer (si supporté par le terminal), et Entrée sur ligne vide exécute aussi le buffer.
Commandes internes :
- :executer force l'exécution du bloc courant
- :afficher affiche l'historique + bloc courant
- :vider vide le bloc courant
- :reinitialiser réinitialise l'historique
- :quitter quitte la boucle
compiler / comp / c — Compiler vers LLVM IR¶
Génère un fichier LLVM IR (.ll) lisible.
galois compiler programme.gal
galois compiler programme.gal -o sortie.ll
galois compiler programme.gal --diagnostics-format json
lexer / lex — Afficher les tokens¶
Affiche la suite de tokens produite par l'analyse lexicale.
Sortie exemple :
parser / parse / p — Afficher l'AST¶
Affiche l'arbre syntaxique abstrait produit par l'analyse syntaxique.
En cas d'échec, --diagnostics-format json produit un diagnostic structuré.
vérifier / verifier / v — Vérifier les types¶
Lance la vérification de types sans compilation.
galois vérifier programme.gal
galois vérifier programme.gal --diagnostics-format json
# Sortie : Vérification réussie: aucune erreur de type détectée
ir — Afficher l'IR¶
Affiche la représentation intermédiaire générée.
doc / documentation — Générer la documentation¶
Génère la documentation HTML à partir des commentaires ///.
-o accepte soit un dossier (création de index.html), soit un fichier .html.
galois doc programme.gal
galois doc programme.gal -o documentation
galois doc programme.gal -o api.html
debug / débogue / debogue — Lancer le débogueur¶
Compile avec les informations de débogage et prépare l'intégration gdb/lldb.
init / nouveau — Créer un projet¶
Crée un nouveau projet avec la structure suivante :
La cible doit pointer vers un chemin inexistant ou un répertoire vide.
Vous pouvez utiliser galois init . pour initialiser le dossier courant quand il est vide.
add / ajouter — Ajouter une dépendance¶
Ajoute une dépendance au fichier galois.toml et met à jour galois.lock.
Quand la version est omise, la contrainte * est utilisée.
Les contraintes valides sont: *, 1, 1.2, 1.2.3, ^1.2, ~1.2.3, >=1.2,<2.0.
Si la dépendance existe déjà avec exactement la même contrainte, la commande est un no-op explicite.
Si elle existe avec une contrainte différente, add échoue avec un diagnostic de conflit et suggère galois upgrade.
upgrade / maj — Mettre à jour une dépendance existante¶
Met à jour de manière déterministe la contrainte d'une dépendance déjà déclarée, puis synchronise galois.lock.
Si la dépendance est absente, la commande échoue avec une suggestion d'utiliser galois add.
Si la version cible est déjà en place, la commande est idempotente (no-op explicite).
lock / verrou — Régénérer le lockfile¶
Reconstruit galois.lock à partir de galois.toml.
aide / help / -h / --help — Afficher l'aide¶
version / -V / --version — Afficher la version¶
Contrat CLI¶
- Un argument requis manquant provoque une erreur (
Erreur: ... requis) et un code de sortie1. - Une commande inconnue provoque une erreur explicite (
Commande inconnue: ...) et un code de sortie1. - Une option inconnue provoque une erreur explicite avec aide d'action (
Erreur: option ..., puis suggestiongalois --help). - Les options à portée commande sont rejetées hors contexte (
--releaseseulement pourbuild/run/repl,--outputseulement pourbuild/compiler/doc). --diagnostics-formatest accepté uniquement pourbuild/run/compiler/vérifier/parser/lexer.galois,galois aide,galois help,galois -hetgalois --helpaffichent l'aide et sortent avec le code0.galois version,galois -Vetgalois --versionaffichent la version et sortent avec le code0.galois runpropage le code de sortie du programme exécuté (si non nul).
Pipeline de compilation¶
Source (.gal)
↓ Lexer
Tokens
↓ Parser
AST
↓ Vérificateur de types
AST vérifié
↓ Générateur IR
IR
↓ Générateur LLVM
LLVM IR (.ll)
↓ Clang
Code objet (.o)
↓ Éditeur de liens
Exécutable natif
Conseils de workflow¶
- Démarrer en REPL pour valider une idée.
- Passer à
runpour une exécution de fichier complète. - Utiliser
buildpour produire un binaire final. - Ajouter
--releasesurrun/buildpour les mesures de performance.
Checklist qualité avant release¶
Exécuter cette liste avant de couper une release :
cargo test --quietpython3 test_docs.py(inclut la cohérence des tableaux commandes/options ci-dessus)