ça peut être autre chose que le XML
+Alpha v0.1+
<*Root ~ Document 1>
<Recette de la pâte à crêpes @recipe>
<Ingrédients @recipe ~ "Les ingrédients !">[sucre,beurre,farine,oeufs,lait],prix=34.33,currency=dollar</>
</>
Ligne par ligne, ce que je veux dire
+ Alpha v0.1 + = Commentaire signalant la version + nom du logiciel
<*Root ~ Document 1> *Root indique à l'interpréteur de créer un nouveau sous ensemble sous Root avec le nom Document 1.
<Recette de la pâte à crêpes @recipe> sous le curseur actuel (root) créer le sous ensemble avec pour diminutif "recipe" et les caractéristiques mentionnées
etc..
</> Remonter au parent du curseur actuel, Dans ce cas ci peut être omis vu que c'est la fin du fichier. (pas nécéssaire de remonter vu qu'on fini le fichier)
Au niveau du *, je pense l'utiliser comme soit un indicateur de macro soit une déclaration, genre <*Root> déclare que ce node est la racine. Mais si je fais par exemple "acceptedValue:*int" et que je demande à ma librairie de me donner la valeur de lib elle me renverra "integer" et l'utilisateur pourrait définir ses types, ce serait des macros .
Par exemple je pourrais modifier mon fichier comme ça.
+Alpha v0.1+
<define Dollar as $>
<*Root ~ Document 1>
<Recette de la pâte à crêpes @recipe>
<Ingrédients @recipe ~ "Les ingrédients !">[sucre,beurre,farine,oeufs,lait],prix=34.33,currency=*$</>
</>
(utf8 obligé tmtc)
et ducoup pas besoin de réécrire dollar
J'aurai pu le faire avec autre chose genre les ingrédients de base de la pate à crepe pour les variantes, etc, ça marcherait avec tout les types (array entre autre)
Ce qui serait supporté : les array à dimensions multiples. Car la facon du programme de gérer les valeurs données serait un enfant du node mais d'un autre type du style "contentNode" qui pourrait avoir comme enfant un node normal. Ducoup je pourrais avoir un arbre super compliqué voir un gros fichier qui aurait une array contenant d'autres fichier, fichinception
En gros je pourrais écrire cela :
+Alpha v0.1+
<define Dollar as $>
<define baseRecipe as [sucre,beurre,farine,oeufs,lait] >
<*Root ~ Document 1>
<Recette de la pâte à crêpes @recipe>
<Ingrédients @recipe ~ "Les ingrédients et leur préparation!">[*baseRecipe, {<Sous noeud ~ ssNoeud> "Lol":"mdr" </> }]prix=34.33,currency=*$</>
</>
Mais je trouve que ça ressemble trop au XML pour certaines choses, j'aimerais trouver un autre indicateur que <>
Et oui, je ne compte pas utiliser l'indentation pour un indicateur car j'aimerais que mes fichiers soit minifiable pour les buils release :p
Sinon je prévois cette maniere de travailler pour les fichiers, ici dans le cas lecture/modification/réécriture
-> Lecture du fichier
-> Construction de l'arbre
-> Navigation dans l'arbre et modifications de l'arbre
-> Effacement du fichier et réécriture de l'arbre dans ce dernier (Minifié ou non, au choix);
La sauvegarde du fichier se fera automatiquement dans le destructeur si elle n'as pas déja été faite, comme ça si on oublie le "fichier.rewrite()" par exemple on n'aura pas de soucis.
PS: Les idées que j'énonce ici me sont venues en écrivant, donc ça peut être fouillis, très fouilli voir irréalisable 