212
De programmeertaal Forth
Over postfix, infix en prefix.
HTK-commando's in Forth
Menig Forth-beginner hikt aan tegen de omgekeerde Poolse notatie.
Op zichzelf is het niet zo'n groot probleem.
Gewoon doen en eraan wennen.
Het vervelende is echter dat de kost voor de baat uitgaat, want pas als je het goed door hebt,
kun je er langzamerhand het nut van leren inzien.
Met andere woorden, voordat je het weet vormt het een psychisch probleem.
Maar er gloort hoop: het programma HTK.FRT maakt huis, tuin en keuken-notatie
in Forth mogelijk.
Dit is de oplossing waar we al zo lang op gewacht hebben!
Het ligt voor de hand dat juist voor de doelgroep het onderstaande programma
geen gesneden koek zal zijn.
Geen nood:
sla het gewoon over en lees verder bij "HTK-commando's maken",
het programma werkt toch wel, al begrijp je de interne gang van zaken niet.
Forth file: c212.frt
\ HTK-COMMANDO'S (Albert Nijhof) -- 1 april 2003
FORTH DEFINITIONS DECIMAL
VOCABULARY HAAKJES
HAAKJES DEFINITIONS ALSO
\ P-stack met relatieve stackpointer in cel # 0
12 CELLS CONSTANT pq
CREATE P 0 , PQ allot
: FRIS 0 P ! ; \ Reset p-stack
: ?P ( p# -- ) \ Controle op over en underflow
PQ 0 WITHIN
IF FRIS TRUE ABORT" Syntax Error "
THEN ;
: P> ( -- x ) P @ DUP CELL- DUP ?P P ! P + @ ;
: >P ( x -- ) P @ DUP ?P CELL+ DUP P ! P + ! ;
FORTH DEFINITIONS
: ) ( -- ) P> 2@ ( xt imm? )
0< STATE @ AND
IF COMPILE, EXIT
THEN EXECUTE ; IMMEDIATE
: HTK ( ccc -- )
>IN @ >R ' DROP \ Bestaat het woord?
R@ >IN ! BL WORD FIND R> >IN ! \ xt imm?
CREATE HERE 2 CELLS ALLOT 2! IMMEDIATE
DOES> >P
BL WORD COUNT EVALUATE
POSTPONE ) ;
: DUMMY ; IMMEDIATE
HTK DUMMY