Voilà j'ai mis à jour mon premier post! Vous pouvez télécharger ma source ici (+ 3 exemples de sources de programme) :
http://keonet.free.fr/Sources/interprete.rar
J'ai augmenté le nombre de fonctions et j'ai commencé à implanter un évaluateur d'expression qui gère pour l'instant +-/*^() mais pas encore les variables.
J'aurais vraiment besoin de votre expérience de programmeur, car j'ai plusieurs questions et ce serait vraiment gentil de votre part de bien vouloir examiner mon code pour m'aider à y répondre!

J’ai déjà suivi vos conseils et faisant l’effort de commenter abondamment mon code.
Un langage interprété est plus lent qu’un langage compilé, mais je ne voudrais pas ce que mon programme soit trop lent, mon but est de l’optimiser au maximum. C’est pour ça que je me pose des questions sur la rapidité à plusieurs niveaux :
- Les opérations de base de PB sur les chaînes (genre Left(), Right(), Mid() ) sont-elles moins rapides que si on fait l’opération manuellement sur la zone mémoire concernée avec PeekS() et PokeS() ? Je me suis embêté à programmer le plus possible la gestion de la mémoire avec les pointeurs en espérant optimiser la vitesse d’exécution de mon code.
- A plusieurs reprises, ça m’arrangerait bien de pouvoir avoir des valeurs de différents types possibles comme résultat d’un ProcedureReturn, c’est-à-dire que la même fonction me renvoie tantôt un nombre, tantôt une chaîne de caractères, comment puis-je procéder ? Y a-t-il une astuce canonique avec les pointeurs ?
- J’utilise massivement des Select/Case dans mon programme, or il me semble que le Select/Case est gourmand en performance, comment je pourrais faire pour m’en débarasser ? Y a-t-il une autre alternative au Select/Case quand on doit examiner un grand nombre de cas possibles ?
- De même, j’ai un recours massif aux procédures : l’implantation de nouvelles commandes entraînera l’utilisation systématique de procédures pour les simuler, et en plus la technique récursive que j’ai trouvé pour évaluer les expressions mathématiques demande à deux fonctions Expression() et Operation() et de s’appeler elles-mêmes ou mutuellement un grand nombre de fois, selon la complexité de l’expression à évaluer. Il me semble que les procédures soit bien plus gourmandes que les sous-programmes en performances, mais les sous-programmes ne peuvent pas s’appeler eux-mêmes. Comment je peux faire pour optimiser mon code et me débarasser le plus possible des procédures ?
- Pour la gestion des variables de type string je ré-alloue de la mémoire à la longueur de la chaîne chaque fois que la valeur de la variable change, je fais ça pour ne pas avoir à allouer une zone mémoire de 1000 octets pour toutes les chaînes et ainsi économiser de la mémoire. Ai-je raison de procéder ainsi ?
Voilà, c’est tout pour l’instant!