Ce dépôt contient un "parser" du langage dédié nommé "M" utilisé par le code source de la calculette des impôts sur les revenus.
m_language.cleanpeg
contient la description de la grammaire du langage M au format cleanpegscripts/m_source_file_to_json_ast.py
est le script de transformation du code source vers un AST en JSONjson/chap-1.json
est un exemple de la transformation en JSON du fichierchap-1.m
Le langage Python 3 est utilisé.
Ce paquet n'est pas publié sur le dépôt PyPI donc pour l'installer il faut passer par git clone
.
git clone https://git.framasoft.org/openfisca/calculette-impots-m-language-parser.git
cd calculette-impots-m-language-parser
pip3 install --editable . --user
L'option
--user
sert sur les systèmes GNU/Linux.
Un utilisateur plus expérimenté en Python peut utiliser
un virtualenv
s'il le souhaite.
Ce projet est à considérer comme un dépôt de données JSON nécessaires au projet calculette-impots-python.
Le fichier de grammaire m_language.cleanpeg
est au format Clean PEG.
La bibliothèque utilisée pour le "parsing" est Arpeggio.
La partie de la grammaire touchant aux expressions est basée sur ce tutoriel.
Les commandes suivantes sont a priori inutiles, à moins que les fichiers source M, la grammaire ou bien le code du parser ait changé. Les fichiers JSON sont de toute façon commités dans le répertoire json.
# Convertir un répertoire de sources M entier en AST
$ ./calculette_impots_m_language_parser/scripts/convert_dir.sh /path/to/calculette-impots-m-source-code/src
# Extraire les données JSON sémantiques
$ python3 calculette_impots_m_language_parser/scripts/json_ast_to_data.py -v
Pour convertir un fichier M particulier :
$ python3 calculette_impots_m_language_parser/scripts/m_source_file_to_json_ast.py file.m