2016-02-12 6 views
3

Dans différents domaines, comment personnaliser l'interpréteur?Comment "étendre" l'interpréteur externe?

Par exemple, dans le SP-Forth l'interprète toujours écrire le contenu de la pile et toujours un CR/LF avant impression:

1 2 3 
Ok (1 2 3) 
.s 
1 2 3 Ok (1 2 3) 

Je voudrais voir

1 2 3 ok 
.s 1 2 3 ok 

Et généralement , Je voudrais être en mesure de définir de nouvelles entrées de données comme

4-3i 
{1,2,3,4,5} 

L'interpréteur devrait puis stockez les données comme je l'ai défini dans l'extension. De plus, en cas d'erreur, j'aimerais que les piles et les variables soient réinitialisées.

Des idées?

Répondre

4

Dans différents systèmes Forth, il existe différents moyens de personnalisation. Dans SP-Forth, vous pouvez définir une autre action pour le vecteur OK. Par exemple, pour éviter l'état de la pile de données d'impression:

: OK2 (--) STATE @ IF EXIT THEN ." ok" CR ; 
' OK2 TO OK 
\ see the original definition in src/compiler/spf_translate.f 

Cependant, il est difficile d'éviter CRLF avant « ok » dans l'application de la console Windows depuis cette CRLF fait partie du texte que vous entrez. En ce qui concerne les nouveaux formats de données, il existe Recognizers RfD. Il est implémenté dans certains systèmes Forth, mais pas encore dans SP-Forth.

Dans SP-Forth, vous pouvez utiliser NOTFOUND mechanism pour ajouter un format de mot personnalisé (interpréteur de mots).