Hmm excuse moi, mais j'ai pas bien compris ton truc
Tu fais une pile de résultats temporaires et tu veux pas faire de pile d'arguments ?
D'une part, pile de résultats et pile d'argument sont la même chose dans un interpréteur bien construit, et d'autre part tu risques de créer beaucoup plus de problèmes que tu n'en résoud avec ça ^^
Exemple tout bête:
Tu as une fonction
A(Argument1, Argument2, Argument3)
Mettons que tu fasse cet appel:
A(1, 3 + x, 4) (x étant une variable)
Tu vas faire comment pour te débrouiller avec le 3 + x hmm ?
Si on est dans ta logique on aurait en prefix
A 1 + 3 x 4 A va donc chercher ses arguments lui même...
Il prend le premier, c'est un nombre tout va bien...
Il prend le deuxième, c'est une somme.... Cela veut-il dire que A doît calculer lui-même ses arguments ? Une manière simple de corriger ce problème serait d'appeler l'interpréteur de manière récursive mais alors comment lui dis tu où il doit s'arrêter dans le parsing de l'expression ? Pas de problème, ça peut se faire en lui donnant un argument qui dit de n'interpréter que le prochain token et de mettre son résultat sur la pile des résultats. Ok tout va bien jusque là, mais si ton expression est très complexe, cela veut donc dire que tu auras un nombre très grand d'appels impriqués, donc un très grand usage de la pile et par conséquent un risque de stack overflow...
Du coup, premièrement ta pile de résultat n'est pas très utile vu que tu n'as besoin que d'un résultat a la fois, et deuxièmement, tu dois faire de multiples appels de fonctions, coûteux autant en mémoire qu'en vitesse d'éxécution.
On te donne une manière qui fait partie des plus simples pour interpréter un programme, a savoir l'utilisation d'une pile d'arguments, qui a l'inverse de la méthode récursive ne débordera que rarement (et dans ce cas là même tu pourras arrêter toi-même l'interprétation en cours sans planter la calcularice...) Alors pourquoi chercher a faire un truc plus compliqué ?