A FORTH a számára értelmezhető szavakat a
szótárban tárolja. Lehetőséget nyújt új szótári szavak létrehozására, ezzel
tulajdonképpen a FORTH-nyelvet bővítjük saját szavakkal. Tulajdonképpen a FORTH
nagy része maga is FORTH-ban íródott.
Új szó definiálása " : "- al
történhet.
Pl: : KIIR 42 EMIT ;
Ezzel defináltuk a KIIR új szót, amelyet
innentől kezdve bármikor használhatunk, funkciója a 42-es kódú karakter kiirása
a képernyőre. A FORTH szavak tulajdonképpen eljárásokként tekinthetők, a
paraméterátadás pedig a vermen keresztül történikAz EMIT utasítás
funkciója, hogy kiírja a verem tetején lévő számnak megfelelő
karaktert.
Fontos: a szavak között kell egy SPACE-nek szerepelni, ezzel
jelezzük a fordítónak, hogy az egy különálló szó, szódefiníciót ";"-vel zárunk.
A ":" és a ";" maga is egy szó, tehát SPACE -ekkel kell őket is választani a
többitől.
A szótár minden elemének van egy láncmezője, ez fűzi öszze a szótár szavait. A láncmező egy mutatót tartalmaz az
előző szó névmezőjére, vagy ( a szótár "legalsó" eleménél) 0-t .Tudunk tehát a láncon haladni; még egy szó
amellyel megtaláljuk a lánc elejét:
LATEST ( ---- ncím )
Az utoljára definiált szótári szónévmezőjének címét adja.
Kereső és láncoló szótár
Zavarba hozó, hogy két olyan szó jelentése között kell különbséget tenni, amelyeket
egyformán "szótár"-nak fordítunk. Az egyik a dictionary szó, amely "fizikai" szótárat jelent, a másik a vocabulary,
amely "logikai" szótár, szavak mutatókkal összeláncolt sorozata. A Forth-ban egy fizikai szótár több "logikait"
tartalmazhat; a FORTH szótáron kívül többnyire van EDITOR és ASSEMBLER szótár is. Alapesetben a FORTH szótárban vagyunk;
ekkor pl. az EDITOR szótár szavait az interpreter egyszerűen nem találja meg, nem ismeri fel. Ahhoz, hogy az EDITOR szótár
szavait használhassuk, az EDITOR-t kell kereső szótárrá tenni. ( A "kereső szótár" meglehetősen szabad fordítása az eredeti
"context vocabulary", kontext szótár kifejezésnek.) A szótárak közül egy adott pillanatban egyetlen lehet
kereső szótár.
Az interpreter az interpretálandó szavakat a kereső (context) szótárban keresi. Egy szótár neve az adott
szótárat teszi kereső szótárrá.
Tehát pl. az EDITOR parancssorral "láthatóvá tettük" az EDITOR szótár szavait.
Minden szótár szavaihoz hózzá vannak láncolva annak a szótárnak a szavai, amelyben az adott szótárat definiálták.
Végső soron ez azt jelenti, hogy
a FORTH szótár szavai minden kereső szótárból látszanak.
Az újonnan definiált
szavak a láncoló szótárba kerülnek.
A szótár nevével csak a kereső szótárat változtatjuk meg;ha azt kívánjuk, hogy
a láncoló szótár is ugyanaz legyen, akkor a DEFINITIONS szót kell használnunk,
amely hozzáigazítja a láncoló szótárat
a keresőhöz, a kettő meg fog egyezni.
Fordított irányban igazítja össze a két szótárat a definíciókat bevezető : szó:
ez a keresőt állítja át úgy, hogy megegyezzen a láncolóval.
A FORGET csak akkor működik, ha a kereső és a láncoló szótár
megegyezik, egyébként hibajelzéssel megszakad.
Definiálhatunk lokális változókat is egy új szó esetén:
: SWAP { a b -- b a }
b a ;
1 2 SWAP .S 2DROP
Ebben a példában { a b -- b a } a lokális definíció: a verem két legfelső eleme. Ezzel a lehetőséggel a definíció lényeges részének
megírásával kell csak foglalkoznunk, anélkül, hogy a verem műveletek túl sok gondot okoznának.