212a
<< <> >>

212

De programmeertaal Forth
home
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
>>