Les reconnaisseurs de code
publication: 28 avril 2024 / mis à jour 29 avril 2024
Les reconnaisseurs est un concept abordé dans plusieurs versions du langage Forth.
Depuis la version 7.0.7.19, ESP32forth intègre les reconnaisseurs de code. Les reconnaisseurs permettent d'étendre l'interpréteur/compilateur FORTH.
Ce concept vient d'être implanté dans toutes les versions eForth, dont ESP32forth, par Brad NELSON. Voici la vidéo qui explique ce concept:
Dans cette vidéo, Brad NELSON donne un exemple permettant d'ajouter et traiter un système de logarithmes, dont vous trouverez le code source ici.
Reconnaitre les nombres binaires
La version FlashForth accepte les nombres binaires sous la forme %nnnnnnnnn
, ceci sans
nécessiter la sélection de la base binaire. ESP32forth ne dispose pas de cette facilité:
binary 10110111 decimal
Avec Flashforth, pour analyser le code binaire situé après le caractère %
comme nombre entier,
il suffirait simplement de taper ceci:
%10110111
Avant la version 7.0.7.19 de eForth/ESP32forth, il aurait été nécessaire de modifier le code source de ESP32Forth.
Voici le code permettant d'étendre les reconnaisseurs de code FORTH de ESP32forth pour détecter et traiter les entiers binaires:
( Add recognizer for binary integers. ) internals also recognizers definitions : REC-BIN-NUM ( c-addr len -- f addr1 | addr2 ) over c@ [char] % = if 1- swap 1+ swap base @ >r BINARY s>number? if ['] aliteral RECTYPE-NUM else RECTYPE-NONE then r> base ! else RECTYPE-NONE then ; ' REC-BIN-NUM +RECOGNIZER previous definitions forth
Une fois ce code compilé, on peut maintenant entrer les valeurs binaires en faisant simplement précéder
du caractère %
, comme ceci:
%123 --> %123 ERROR: %123 NOT FOUND! --> %101 5 --> . 5 ok
J'ai volontairement entré d'abord un nombre %123
non binaire. L'inteerpréteur FORTH
détecte ceci comme une erreur d'interprétation. Le second essai %101
empile parfaitement
la valeur correspondant au nombre binaire 101.
Legal: site web personnel sans commerce / personal site without seling