-
Parsing en VBA
Bonjour à tous,
J'ai besoin de parser un petit langage propriétaire en VBA. Ce langage prend cette forme :
Code:
<a> = 4 and (<b> = 2 or (<b> = 1 and <c> = 3))
Il n'est pas excessivement compliqué mais les imbrications font qu'il ne peut être parsé avec des expressions régulières... J'ai naturellement pensé à utiliser un générateur de parser comme Lex/Yacc ou ANTLR mais le souci est qu'ils ne génèrent pas de code VB. Il faudra donc une phase de conversion entre le code généré et VB.
Est-ce que certains d'entre vous ont déjà eu à faire ce type de chose et pourraient me conseiller un outil/une méthode ?
Merci d'avance,
Mark
-
Bonjour Mark531,
Je n'ai jamais parsé de code de toute ma vie donc mes propos ne sont peut-être pas les plus "pro" que tu puisses trouver sur le sujet.
S'il me fallait traduire ton code en VBA et avec le VBA, j'utiliserai la fonction Split pour transférer le tout dans un tableau de variables puis j'analyserai le premier et le dernier caractère de chaque mot. Enfin voilà la méthode que je développerai.
Bertrand
-
Je ne suis pas un pro non plus mais j'ai déjà travailler avec quelques parseurs pour un projet.
On peut parser n'importe quel langage (même un langage de notre création) vers n'importe quel autre langage (même de notre création) donc je comprend pas trop. :?
Pour ma part j'avais utilisé au final Code Worker pour générer d'un langage de ma création vers du C.
-
A l'évidence, vous n'avez jamais parsé de langage complexe. :)
C'est pas grave, je vais générer une grammaire avec ANTLR pour ceux qui connaissent. Un des fondateurs m'a conseillé de :
- Créer la grammaire dans ANTLR
- Générer le moteur de parsing en C#
- Créer une assembly à partir de ce moteur
- Communiquer en COM avec VBA
Sauf que je n'ai jamais fait de C# donc ça risque d'être bien chaud... Du coup, je vais peut-être poster mes futures questions dans le forum C#. J'ai surtout peur de la transco entre les objets .net et les objets VBA.