by critor » 25 Jun 2010, 15:07
J'ai commencé aujourd'hui-même à programmer un moteur formel.
Pour le moment, j'en suis à l'analyseur syntaxique.
Après, une fois les différents termes/facteurs/arguments identifiés, il est utile de les organiser selon une arborescence.
Hélas je me suis rendu compte que la Nspire ne supporte pas ce type de structure, puisque les listes de listes, ou listes de matrices sont refusées (erreur).
Dommage, ça va ralentir les transformations de l'expression(factorisation, développements).
Je m'oriente donc plutôt vers une liste en notation préfixée ou postfixée.
Si je travaille sur une structure en notation infixée, la complexité des transformations devient monstrueuse, avec tous les tests de priorités et parenthèses qui sont à faire.
Pour infos:
Notation infixée: langage naturel, l'ordre d'une opération n'est pas prévisible facilement, car il dépend du contexte (opérations plus ou moins prioritaires, parenthèses...), ex: 2+3
Notation préfixée: langage de programmation LISP ou SCHEME, l'opérateur ou fonction est toujours noté avant ses opérandes ou paramètres, l'ordre d'une opération est rapidement prévisible (opérations effectuées de droite à gauche), ex: (+ 2 3)
Notation postfixée dite RPN: notation par défaut sur les calculatrices HP du siècle dernier utilisant une pile LIFO, l'opérateur ou fonction est toujours noté après ses opérandes ou paramètres, l'ordre d'une opération est prévisible rapidement (opérations effectuées de gauche à droite), plus aucun usage des parenthèses, ex: 2 2 +
A défaut d'avoir des arbres, je pense que le dernier choix avec un codage de l'expression sous la forme d'une liste RPN sera le meilleure ou le moins pire.
Je n'ai aucune idée du temps d'exécution à priori.