………
Qu’est-ce que Forth ?
Langage sans syntaxe
Mots séparés par des espaces
T ous les autres caractères sont des identicateurs valides : drop , ( , s » Chaque nouveau mot devient partie intégrante du langage Le principe de Forth est d’écrire des phrases décrivant le problème : le langage devient spécique à l’application.
Historique
Créé par Charles H. Moore en 1968
Noyau extrêmement petit (typiquement quelques Ko)
Pas de cycle éditer/compiler/exécuter/débugger
T est interactif
Les mots peuvent être appelés de manière interactive dès qu’ils sont dénis
Les mots : et ; commencent et terminent une définition
À partir des mots saisir, tourner et lacher, on peut dénir le mot deplacer : : deplacer saisir tourner lacher ;
Le mot deplacer est inséré dans le dictionnaire. Lorsque l’utilisateur tape ce mot, il est recherché dans le dictionnaire et soit appelé (mode interprété) soit compilé (lors de la définition d’un nouveau mot)
Le système Forth
Mélange un interp réteur et un compilateur Chaque nouveau mot (équivalent d’une fonction en Forth) est compilé immédiatement et devient instantanément disponible Les mots sont séparés par un blanc ou un retour à la ligne Un dictionnaire contient l’adresse du code de chaque mot Une pile de données sert à passer les paramètres entre les mots.
Exemples
Dénition d’un mot carre qui élève au carré : carre dup * ;
Dénition d’un mot cube qui élève au cube : cube dup carre * ;
La phrase suivante ache 27 (le mot . ache (en le consommant) l’entier au sommet de la pile) 3 cube .
Note : seul le haut de la pile est imp ortant
Modes
Forth dispose de deux modes. Le c÷ur lit un mot, puis agit :
Interprétation : c’est le mode par défaut ; tout mot qui est tapé est exécuté, tout nombre est placé sur la pile Compilation : chaque mot ajoute un appel à ce mot dans la compilation courante, chaque nombre génère le code nécessaire pour placer ce nombre sur la pile Le mot immediate rend le dernier mot déni immédiat :
en mode compilation comme en mode interprétation, le mot est exécuté immédiatement ce mode sert à implémenter de nouvelles constructions du langage