Le but est d'analyser une formule dans un fichier. La première étape est de construire un arbre de syntaxe. J'ai décidé que pour rendre l'application plus propre je passerais par un module "Lexer". Il se construit grâce à un itérateur représentant le flux de donnée devant être analysé et, par le biais d'une méthode, renvoie des "Token", classe encapsulant une constante entière représentant un certain caractère (par exemple "/\" (ET logique) représenté par la valeur "1"). Ceci dans le but de dissocié l'interprétation graphique/syntaxique de l'interprétation sémantique de ce symbole. Le parser reçoit donc des Tokens et construira l'arbre syntaxique grâce à eux. C'est également lui qui sera chargé de construire la structure de donnée qui sera utilisée par la suite.
Donc une expression régulière ne conviendra pas pour ces raisons (confirmez svp.) :
- Trop lente par rapport à un module spécialisé (j'accuse la généricité du module "re").
- Ne permet pas de renvoyer une abstraction comme le "Token".
- Donc un module "Lexer" serait quand même nécessaire.
- Mais pour être utile, l'expression régulière devrait analyser l'entièreté de la formule d'abord. Donc on ne peut pas construire notre arbre de syntaxe en une seule passe.
Merci pour vos réponses.