Analyseur syntaxique en VBA

Le
Ghislain Benrais
Bonjour,
Dans un classeur Excel, j'ai besoin d'analyser des expressions
booléennes comme par exemple :
q3 = 1 OU q3 =2 ET q3 = 1
Pour en valider la syntaxe et de les simplifier, comme dans cette exemple :
q3 = 1
Je sais que à problème simple, solution balaise. Une premier jet de la
grammaire des expressions peut être :
Lexèmes :

lettre = a|b| z|A|B| Z
chiffre = 0|1|2|3|4|5|6|7|8|9
identificateur = lettre (lettre | chiffre)*
entier = chiffre+
nombre_flottant = entier (e | . entier)
nombre = (entier | nombre_flottant)

Grammaire :

exp ::= exp + exp
| exp × exp
| exp - exp
| exp / exp
| exp = nombre
| exp AND exp
| exp OR exp
| exp XOR exp
| (exp)
| identificateur
| nombre
| nombre_flottant

J'ai trouvé des exemples de code pour l'analyse syntaxique, mais après
je ne sais pas comment les simplifier.
Merci pour votre aide,
Ghislain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
fetnat
Le #4531891
Bonjour,

Tu es sûr que c'est booléen ? Alors pourquoi q3=2 ? c'est soit 0 ou 1,
mais 2...c'est de la fuzzy logic !

Fetnat


Bonjour,
Dans un classeur Excel, j'ai besoin d'analyser des expressions
booléennes comme par exemple :
q3 = 1 OU q3 =2 ET q3 = 1
Pour en valider la syntaxe et de les simplifier, comme dans cette
exemple :
q3 = 1
Je sais que à problème simple, solution balaise. Une premier jet de
la grammaire des expressions peut être :
Lexèmes :

lettre = a|b|... z|A|B|... Z
chiffre = 0|1|2|3|4|5|6|7|8|9
identificateur = lettre (lettre | chiffre)*
entier = chiffre+
nombre_flottant = entier (e | . entier)
nombre = (entier | nombre_flottant)

Grammaire :

exp ::= exp + exp
| exp × exp
| exp - exp
| exp / exp
| exp = nombre
| exp AND exp
| exp OR exp
| exp XOR exp
| (exp)
| identificateur
| nombre
| nombre_flottant

J'ai trouvé des exemples de code pour l'analyse syntaxique, mais
après je ne sais pas comment les simplifier.
Merci pour votre aide,
Ghislain


Publicité
Poster une réponse
Anonyme