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
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