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 !;)
Version imprimable
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... :roll:
--
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
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!
Bonjour,
si tu souhaites faire un petit analyseur syntaxique pour un mini compilateur, il est généralement plus simple d'utiliser le récursif car il colle mieux au grammaires.
Pour information, le SiAlorsSinon ne représente quasiment aucune consomation CPU, mais si tu mets des calcul dans le SI... c'est autre chose.
Effectivement, je souhaite faire un petit analyseur syntaxique pour un mini compilateur. D'autre part, les utilisateurs pourront saisir des calculs dans les expressions des si. par exemple : SI variable + '10' > '200'
Bref... plus j'avance et plus je m'apercois qu'il est possible de faire n'importe quoi dans ces expressions.
Connaissez vous la notion d'arbre syntaxique ? Est ce que c'est applicable dans pour l'étude de ce genre d'expression ?
Merci !
Bonjour,
si tu souhaites faire un analyseur syntaxique, il faut IMPERATIVEMENT commencer par écrire la grammaire de ton langage.
Une fois que tu auras une grammaire correcte pouvant accepter les différents traitement que tu souhaites, il ne te restera plus qu'à générer les différentes fonction pour interpréter la grammaire.