Outils
Outils de développement et utilitaires pour Catnip.
Liste des outils
Linter
Analyse statique du code Catnip : syntaxe, style et sémantique.
Commandes principales :
catnip lint script.cat- Analyse complètecatnip lint -l syntax script.cat- Syntaxe seulementcatnip check script.cat- Alias pour vérification syntaxecatnip lint -l style script.cat- Style seulementcatnip lint -l semantic script.cat- Sémantique seulement
Diagnostics détectés :
- Erreurs de syntaxe (E1xx)
- Problèmes de style/formatage (W2xx)
- Variables non définies (E3xx)
- Variables non utilisées (W3xx)
Formatteur de code
Formatage automatique du code Catnip avec style opinionated (inspiré de Black).
Commandes principales :
catnip format script.cat- Formater un fichiercatnip format --- Formater depuis stdin
Caractéristiques :
- Préserve les commentaires et la structure
- Indentation 4 espaces
- Espaces autour des opérateurs binaires
- Approche token-based (pas de reconstruction AST)
Extract Grammar
Extraction programmatique de la grammaire Catnip pour génération d'outils tiers.
Commandes principales :
python -m catnip.tools.extract_grammar- Affichage résumépython -m catnip.tools.extract_grammar --json grammar.json- Export JSONpython -m catnip.tools.extract_grammar --update-lexer- Mise à jour lexer Pygments
Caractéristiques :
- Extraction keywords, operators, terminals, rules
- Export JSON structuré
- Génération automatique de lexer Pygments
- API programmatique
Lexer Pygments
Coloration syntaxique du code Catnip pour Sphinx, MkDocs, pygmentize et tous les outils compatibles Pygments.
Utilisation :
pygmentize -l catnip script.cat- Coloration terminal- Code blocks Sphinx/MkDocs avec
.. code-block:: catnip - API programmatique avec
CatnipLexer
Caractéristiques :
- Auto-généré depuis
grammar.lark(ne pas éditer manuellement) - Support complet des tokens Catnip (keywords, operators, strings, numbers, broadcasting)
- États lexer pour gérer broadcasting et nested structures
- Enregistré automatiquement via entry_points
Workflows courants
Linter le projet avant commit
# Vérification rapide (syntaxe)
catnip lint -l syntax **/*.cat
# Analyse complète
catnip lint **/*.cat
# Ignorer les warnings, échouer seulement sur erreurs
catnip lint **/*.cat 2>/dev/null || exit 1
Formater tout le code du projet
find . -name "*.cat" -type f -exec sh -c 'catnip format "$1" > "$1.tmp" && mv "$1.tmp" "$1"' _ {} \;
Générer lexer après modification grammaire
# 1. Modifier grammar.lark
# 2. Régénérer le lexer
python -m catnip.tools.extract_grammar --update-lexer
Export grammaire pour éditeur tiers
# Export JSON
python -m catnip.tools.extract_grammar --json catnip_grammar.json
# Utiliser dans VSCode, Vim, etc.
Coloration syntaxique dans la documentation
# Sphinx : utiliser code-block catnip
# Dans docs/conf.py
# pygments_style = 'monokai'
# MkDocs : activer pygments dans mkdocs.yml
# markdown_extensions:
# - pymdownx.highlight:
# use_pygments: true
# Export HTML standalone
pygmentize -l catnip -f html -O full,style=monokai script.cat > output.html