Forth
ここに 実行されると単一の文字 Q を発行するワード EMIT-Q の定義がある。
この定義は Q のASCII値 (81) を直接を使うことで書かれている。括弧の間の文字列はコメントで、コンパイラに無視される。ワード EMIT はデータスタックから値をとり、対応する文字を表示する。
次の EMIT-Q の再定義は、ワード[(左大括弧)、](右大括弧), CHAR、LITERAL をインタプリタステートを一時的に切り替えるために使っており、文字 Q のAscii値を計算し、コンピレーションステートを返し、計算した値を現在のコロン定義に追加する。
構文解析ワード CHAR は空白で区切られたワードをパラメータとしてとり、データスタック上のその最初の文字の値を置く。ワード [CHAR] は CHAR のイミディエイトバージョンである。[CHAR]を使って、EMIT-Q の定義例は次のように書くことができる。
この定義はコメントを書くために \(バックスラッシュ)を使っている。
CHAR と [CHAR]の両方は ANS Forth では事前に定義される。IMMEDIATE と POSTPONE と使って、[CHAR] はこのように定義することができる。
ANS Forth では、ワード :NONAME を用いて、次の;(セミコロン)までの後続のワードをコンパイルし、実行トークン (execution token) をデータスタック上に残す、無名のワードが定義できる。
ワード EXECUTE はデータスタックから実行トークンを取り出し、関連づけられたセマンティクスを実行することができる。またワード COMPILE,(COMPILE コンマ)は、データスタックから実行トークンを取り出し、コンパイルする。
ワード ' (tick) は、ワード名を引数としてとりデータスタック上のワードに関連づけられた実行トークンを返す。
古典的な Forth システムでは伝統的にオペレーティングシステムもファイルシステムも使われない。コードはファイルに格納される代わりに、ソースコードは物理的なディスクアドレスに書かれたディスクブロックに格納される。ワード BLOCK はディスクスペースの1キロバイトサイズのブロックの数値からデータを格納しているバッファのアドレスへの変換に割り当てられ、Forth システムによって自動的に管理される。固定されたディスクブロック範囲にファイルが配置されるときには、システムのディスクアクセスが使われる実装もある。たいていはこれらはディスクブロックごとのレコードの整数をつかって、固定長バイナリレコードして実装される。高速な検索はキーデータ上のハッシュアクセスによって実現される。
ふつうは cooperative なラウンドロビンスケジューリングであるマルチタスクは、通常利用可能である(ただし、マルチタスキング・ワードとサポートは ANSI Forth 規格ではカバーされていない)。ワード PAUSE は、次のタスクの配置や実行コンテキストのリストアための 現在のタスクの実行コンテキストの保存に使われる。
Forth 仮想マシンは実装が単純で規格のリファレンス実装を持たないため、大量の言語実装が存在する。標準的な各種デスクトップコンピュータシステム (POSIX, Microsoft Windows, macOS) をサポートしていることに加え、これらの多くの Forth システムは各種の組み込みシステムもまた対象としている。1994年の ANS Forth 規格に準拠するさらに有名ないくつかのシステムが列挙する。
Gforth - GNUプロジェクトによる移植性の高い ANS Forth 実装
Forth Inc. - Forth の開発者たちによって設立され、デスクトップ向け (SwiftForth) と組み込み向け (SwiftX) ANS Forth ソリューションを販売している
MPE Ltd. - 高度に最適化されたデスクトップ (VFX) と 組み込み ANS Forth コンパイラ
Open Firmware - ANS Forth に準拠したブートローダと ファームウェア の規格
Freely available implementations
Commercial implementations
プラットフォームごとにまとめられたより最新の一覧は Forth systems
Forthの基本的なデータ構造は、「ワード」を実行可能なコードや名前のつけられたデータ構造を対応させる「ディクショナリ」である。このディクショナリは、門番(通常は NULL ポインタ)が発見されるまで最も新しく定義されたワードから最も古いワードまで進むリンクを用いた連結リストのツリーとして、メモリに展開される。コンテキストスイッチは異なる葉で開始するためにリスト検索を引き起こす。首位のメインの幹への枝のマージは最終的にルートの門番へ戻ってくるので、連結リスト検索は継続する。そこはさまざまなディクショナリになることができる。メタコンピレーションのような稀なケースでは、ディクショナリは隔離されスタンドアロンである。この効果は名前空間のネストのそれに似ていて、コンテキストに依存するキーワードのオーバーロードが可能である。
定義されたワードは一般的にヘッドとボディからなり、ヘッドは名前フィールド (NF) とリンクフィールド (LF) からなり、ボディはコードフィールド (CF) とパラメータフィールド (PF) からなる。
ディクショナリのエントリのヘッドとボディは、隣接していないかもしれないので別々に扱われる。たとえば、Forth プログラムが新しいプラットフォームのために再コンパイルされたとき、ヘッドはコンパイルするコンピュータに残るかもしれないが、ボディは新しいプラットフォームに行ってしまっている。組み込みシステムのようないくつかの環境によっては、ヘッドは不必要にメモリを占有する。しかしながら、もしターゲット自身が対話的なForthをサポートすることを期待されるなら、クロスコンパイラによってはヘッドをターゲット内に配置するかもしれない。