Bonjour tout le monde!
Je suis sur une problématique de simplification du code niveau utilisateur dans un domaine de mathématique. L'ensemble des utilisateurs sont des mathématiciens et ils ont l'habitude d'écrire leur fonction avec les symboles sommes, produits, divers indices etc...
Pour une écriture simplifier du code, je cherche à faire une sorte de parser qui permet de reconnaitre différents mots-clefs et qui calculera la somme ou produit en question.
Voici un example d'équation (relativement simple):
Cet example devrait faire: coef[0]*var[0] + coef[2]*var[2] + coef[4]*var[6]...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sum(i, 0, N) * Sum (j, 0, M) coef[i+j]*var[i*i+j] <= 0
Je remarque une grosse difficulté ici: récupérer les indices ainsi que la formulation (i+j ou i*i+j) à appliquer pour récupérer les données des variables et des coefficients (cette formulation n'étant pas fixe, elle doit générique).
J'ai très rapidement regardé la bibliothèque Boost Spirit qui permet de faire des grammaires plus ou moins complexes.
Voici donc mes questions:
- Est-ce que Boost::Spirit est adaptée à ce genre de problème?
- Existe-t-il des solutions toutes prêtes?
- Sinon pouvez-vous me conseiller les démarches à suivres (tuto etc) pour résoudre se problème?
Merci d'avance!!
Partager