LE FORTH

Quelques mots :

Voici quelques mots Forth, et leur action :
+      Addition
-      Soustraction
/      Division entière
*      Multiplication
.      Affichage destructif du sommet de la pile
.s      Affichage non destructif de la pile

Qu'est ce que c'est cette histoire de pile? Le Forth est un langage à pile, c'est à dire qu'il faut déposer sur une pile les données que l'on veut faire traiter par Forth, et qu'il renvoie lui même les résultats sur cette pile. Ainsi si je veux additionner 2 et 3, je dois les déposer sur la pile en tapant (les commentaires sont entre parenthèses) :
              ( il y a 2 sur la pile )
              ( il y a 2 et 3 sur la pile, 3 au dessus de 2 )
              ( Forth utilise 2 et 3, et renvoie 5 sur la pile )
              ( On affiche le résultat, et la pile est a nouveau vide )
On aurait pu écrire la même phrase Forth comme ceci :
2 3 + .¬

  Notons que la multiplication et l'addition sont commutatives, et que donc l'ordre des opérandes est sans importance, ce qui n'est pas le cas pour la soustraction ou la division, ainsi :
3 2 - .¬        (affichera 1)
2 3 - .¬        (affichera -1)
4 2 / .¬        (affichera 2)
2 4 / .¬        (affichera 0 -division entiere-)

L'état de la pile est très important, c'est pourquoi, on représente souvent l'état de la pile avant et après une opération par un descripteur de pile noté entre parenthèses, ainsi pour l'addition le descripteur est :
( n1 n2 -- n1+n2 ), c'est à dire on prend l'entier n1 et l'entier n2 sur la pile, on fait l'opération symbolisée par les deux tirets ( certains en utilisent trois ), et la pile se retrouve avec un entier étant la somme de n1 et n2 au sommet, on aurait aussi pu écrire le descripteur de pile comme ceci ( n1 n2 -- n3 ), mais on n'aurait moins de précision sur la valeur de n3. Notons que dans le descripteur de pile, l'élément le plus à droite (de part et d'autre des tirets) représente le sommet de la pile. Si l'on veut exécuter l'opération suivante : (1+2)*(5-1), comme Forth ne connait pas les parenthèses pour les calculs, il faudra écrire :
1 2 + 5 1 - * .¬        (déposer 1 et 2 les additionner-première parenthèse- déposer 5 et 1 soustraire le second du premier-deuxième parenthèse- multiplier et afficher)  Décomposons cette formule et affichons l'état de la pile :
1 2¬    ( -- 1 2 )
      ( 1 2 -- 3 )
5 1¬    ( 3 -- 3 5 1 )
      ( 3 5 1 -- 3 4 )
      ( 3 4 -- 12 )
¬      ( 12 -- )

NB : Lorsque Forth attends des ordres, il affiche OK.

retour HautDePage