A Forth programozási nyelv

Példaprogramok



Példaprogramok

A CASE vezérlési szerkezet kulcsszavainak forrása:
: CASE ( ---- névjegy ) ( fordításkor )
?COMP
CSP @ ( mivel a CSP-t elrontjuk, illik megőrizni)
( az eredeti értéket )
!CSP ( CSP-be a veremmutató pillanatnyi értéke )
4 ( névjegy )
; IMMEDIATE
: OF ( névjegy ---- paramétercím névjegy )
( fordításkor )
4 ?PAIRS ( volt CASE? )
COMPILE OVER ( az elágaztató érték összevetése az )
COMPILE = ( of -értékkel )
COMPILE 0BRANCH ( ha nem =, az ENDOF utánra megyünk)
HERE ( ide jön majd az ugrási cím )
0 , ( ugrási cím helye )
COMPILE DROP ( ha ez az igazi OF, az elágaztató )
( értékre nincs már szükség )
5 ( az OF névjegye )
; IMMEDIATE

: ENDOF ( paramcím névjegy1 ---- paramcím2 névjegy2 )
( fordításkor )
5 ?PAIRS ( volt OF? )
COMPILE BRANCH ( az OF ág végéről az ENDCASE - re )
( megyünk )
HERE paramcím2 )
0 , ( paraméter helye )
SWAP 2 ( készülés az ENDIF - re )
[COMPILE] ENDIF
4 ( névjegy2 )
; IMMEDIATE

: ENDCASE
4 ?PAIRS
COMPILE DROP ( ide akkor jut majd futáskor a program, )
( ha egyik OF sem volt az igazi, s )
( a vermen maradt az elágaztató érték )
BEGIN ( az ENDOF - ok ugrási címei )
SP@ CSP @ = 0=
WHILE ( míg el nem fogyott, amit az ENDOF-ok a veremre )
( tettek )
2 ( névjegy az ENDIF -nek )
[COMPILE] ENDIF
REPEAT
CSP ! ( ezért őriztük meg a vermen CSP eredeti értékét )
; IMMEDIATE -