Bonjour,
Connaissez vous des algorithmes d'évaluation de conditions Si alors sinon imbriqués ? Pour la performance, mieux vaut il un recursif ou un traitement iteratif ?
Merci pour votre aide !![]()
Bonjour,
Connaissez vous des algorithmes d'évaluation de conditions Si alors sinon imbriqués ? Pour la performance, mieux vaut il un recursif ou un traitement iteratif ?
Merci pour votre aide !![]()
Un "algorithme d'évaluation de Si Alors Sinon" ? Qu'est-ce que tu veux dire, il n'y a aucun algorithme impliqué !! Un IfThenElse est traduit par des sauts dans le code au niveau langage machine, la question de la récursivité ou de l'itération ne se pose pas.
Ou alors je n'ai pas compris ta question, ce qui est fort possible vu la précision extrême de ton post...
--
Jedaï
En fait, mon programme doit interpreter du code qui peut contenir des expressions "Si Alors Sinon" imbriqués.
Il n'est donc pas question pour le moment de compilation mais juste d'interpretation.
Actuellement j'utilise une méthode récursive pour interpreter la saisie de l'utilisateur.
tu dois d'abord generer une grammaire qui gere les SiALorsSinon, et a partir de cette grammaire tu choisis une methode d'analyse syntaxique ascendante ou descendante mais c'est tout un cours
Mon site :
ici
Mes articles :
Prise en main de Ant
Administration des ressources avec JMX
Programmation orientée aspect en Java avec AspectJ
Mon CV :
ici
A vrai dire, la question dépend plus de la structure que tu utilises pour stocker ton programme à interpréter... Généralement tu n'as pas besoin de récursivité pour traiter un IfThenElse, sauf si ta structure est mal conçue (il peut y avoir d'autres raisons, liées à la portée des variables dans ton langage interprété).
Entendons nous bien, cela ne veut pas dire qu'il ne faut pas t'exprimer de façon récursive, mais bien qu'une récursivité terminale devrait suffire et sera sans doute plus naturelle qu'une reformulation itérative. Evidemment si tu es dans un langage où les récursivités terminales ne sont pas optimisées, tu ferais mieux d'éviter. (D'un autre côté, pour écrire un interpréteur, les langages en questions ne sont sans doute pas le meilleur choix... Quel langage utilises-tu au fait ?)
--
Jedaï
Bonjour,
Je déterre ce sujet car il avait été mis entre parenthèse depuis le temps. J'ai donc besoin d'analyser une expression de calcul saisie pour l'interpreter et en produire un résultat.
Je travaille en c#. L'utilisateur saisie les données dans une richtextbox. Il peut saisir des tests si alors sinon imbriqués (seulement cela et rien d'autre). Je suis un peu paumé devant les possibilités... pouvez vous m'aiguiller ?
actuellement, j'arrive à correctement découper l'expression saisie en une suite de token.
Par rapport à ce que dis Jedai, est ce que les appels récursifs sont optimisés en c# ?
Merci pour votre aide!
Partager