Interpreter - Verhalten im Fehlerfall steuern: wordlist.word

17/03/2015 - 14:48 von djc | Report spam
Hallo,

ich würde gerne den Interpreter von gForth so einstellen/ergànzen, daß er bei einem nicht gefundenen Wort versucht, z.B. folgende Notation zu erkennen und entsprechend zu suchen:

wordlist.word

D.h. ich müßte das Fehlerverhalten von interpret (?) so ergànzen, daß es bei
"nicht gefunden" einen Punkt "." im Token sucht und zerlegt - in den Teil davor und den Teil danach, den Teil davor in der aktuellen Suchordnung sucht und direkt ausführt in der Annahme, es sei eine Wordlist, deren WID dann auf dem Stack landet, den Teil danach in eben dieser WID sucht (search-wordlist) und je nach STATE entweder compiliert oder ausführt...

Im RTFM habe ich dazu leider nicht allzuviel gefunden, also frage ich mal hier.

Die Alternative dazu wàre m.E. sowas wie z.B.
: test
[ get-order my-wordlist 1 set-order ]
my-word-from-my-wordlist
[ set-order ]
;
oder
: test [ s" my-word" my-wordlist search-wordlist drop compile, ] ;
...also nicht so schick...

Vielen Dank,
Daniel
 

Lesen sie die antworten

#1 Bernd Paysan
17/03/2015 - 22:24 | Warnen spam
djc wrote:

Hallo,

ich würde gerne den Interpreter von gForth so einstellen/ergànzen, daß er
bei einem nicht gefundenen Wort versucht, z.B. folgende Notation zu
erkennen und entsprechend zu suchen:

wordlist.word

D.h. ich müßte das Fehlerverhalten von interpret (?) so ergànzen, daß es
bei "nicht gefunden" einen Punkt "." im Token sucht und zerlegt - in den
Teil davor und den Teil danach, den Teil davor in der aktuellen
Suchordnung sucht und direkt ausführt in der Annahme, es sei eine
Wordlist, deren WID dann auf dem Stack landet, den Teil danach in eben
dieser WID sucht (search-wordlist) und je nach STATE entweder compiliert
oder ausführt...

Im RTFM habe ich dazu leider nicht allzuviel gefunden, also frage ich mal
hier.

Die Alternative dazu wàre m.E. sowas wie z.B.
: test
[ get-order my-wordlist 1 set-order ]
my-word-from-my-wordlist
[ set-order ]
;
oder
: test [ s" my-word" my-wordlist search-wordlist drop compile, ] ;
...also nicht so schick...



Die aktuelle Git-Version und jüngere Snapshots von Gforth haben Recognizer,
damit gehen solche Änderungen recht einfach.

Ich würde da von der Notation eher einen : nehmen, also vocabular:word, das
sieht dem expliziten Scoping in anderen Sprachen àhnlicher.

Wie die Recognizer funktionieren, ist in der VD 2014-03 erklàrt (von
Matthias Trute, dessen amForth die gleichen Recognizer kann wie Gforth).

Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/
net2o ID: kQusJzA;7*?t=}1GWr!+0qqp_Cn176t4(dQ*

Ähnliche fragen