コンパイラ自身はモノリシックなプログラムではない。これは システムから可視な Forth ワードとプログラマから利用可能なものとからなっている。このことはプログラマが特殊な目的のためにコンパイラのワードを変更することを可能にする。名前フィールド内の「コンパイル時」フラグは、「コンパイル時」の振る舞いのワードのセットである。ほとんどの単純なワードは、それがコマンドライン上で入力されたかコードに埋め込まれたかにかかわらず、同じコードが実行される。そのようにコンパイルされるとき、コンパイラはコードかワードへのスレッデッドポインタを単に配置する。コンパイル時ワードの古典的な例は IF and WHILE といった制御構造である。Forth のすべての制御構造とほとんどすべてのコンパイラはコンパイル時ワードとして実装される。すべての Forth 制御フローワードは、プリミティブなワードBRANCHや?BRANCH（もしfalseなら分岐する）の各種の組み合わせをコンパイルするために、コンパイルの間に実行される。コンパイルの間、データスタックは制御構造のバランシング、ネスティング、ブランチアドレスのバックパッチングをサポートするのに使われる。コード断片... DUP 6 < IF DROP 5 ELSE 1 - THEN ...は定義の内側では典型的には次のような一連にコンパイルされる。... DUP LIT 6 < ?BRANCH 5  DROP LIT 5  BRANCH 3  LIT 1 - ...BRANCHのあとの数のは相対的なジャンプアドレスを表している。LITは「リテラル」数値をデータスタックにプッシュするためのプリミティブなワードである。
ディクショナリの厳密なフォーマットは規定されず、実装に依存する。しかしながら、いくつかのコンポーネントはほとんどいつも提示しており、しかし、厳密なサイズと順序は変わるかもしれない。記述された構造、ディクショナリエントリはこのように見えるかもしれない。structure  byte:       flag           \ 3bit flags + length of word's name  char-array: name           \ name's runtime length isn't known at compile time  address:    previous       \ link field, backward ptr to previous word  address:    codeword       \ ptr to the code to execute this word  any-array:  parameterfield \ unknown length of data, words, or opcodesend-structure forthwordこの名前フィールドはワードの名前の長さ（典型的には32バイト）を与えるプリフィックスで開始し、何ビットかはフラグ用である。それからワードの名前の文字表現がプリフィックスのあとに続く。特定のForth実装に依存するが、アラインメントのためひとつ以上の NUL ('\0') バイトがあるかもしれない。リンクフィールドは以前に定義されたワードへのポインタを含む。このポインタは次に古い隣接するワードへの、相対的な変位かもしれないし、絶対的なアドレスかもしれない。このコードフィールドポインタは　コードを実行するワードのアドレスか、パラメータフィールド内のデータか、プロセッサ直接実行するであろうマシンコードの開始のいずれかになるだろう。ワードを定義するコロンでは、コードフィールドポインタはリターンスタック上の現在の Forth 命令ポインタ (instruction pointer, IP) を保存し、ワードを実行継続するための新たなアドレスを用いてIP をロードするワードを指し示す。これはプロセッサの call/return 命令が行っているのと同様である。
Forthの基本的なデータ構造は、「ワード」を実行可能なコードや名前のつけられたデータ構造を対応させる「ディクショナリ」である。このディクショナリは、門番（通常は NULL ポインタ）が発見されるまで最も新しく定義されたワードから最も古いワードまで進むリンクを用いた連結リストのツリーとして、メモリに展開される。コンテキストスイッチは異なる葉で開始するためにリスト検索を引き起こす。首位のメインの幹への枝のマージは最終的にルートの門番へ戻ってくるので、連結リスト検索は継続する。そこはさまざまなディクショナリになることができる。メタコンピレーションのような稀なケースでは、ディクショナリは隔離されスタンドアロンである。この効果は名前空間のネストのそれに似ていて、コンテキストに依存するキーワードのオーバーロードが可能である。定義されたワードは一般的にヘッドとボディからなり、ヘッドは名前フィールド (NF) とリンクフィールド (LF) からなり、ボディはコードフィールド (CF) とパラメータフィールド (PF) からなる。ディクショナリのエントリのヘッドとボディは、隣接していないかもしれないので別々に扱われる。たとえば、Forth プログラムが新しいプラットフォームのために再コンパイルされたとき、ヘッドはコンパイルするコンピュータに残るかもしれないが、ボディは新しいプラットフォームに行ってしまっている。組み込みシステムのようないくつかの環境によっては、ヘッドは不必要にメモリを占有する。しかしながら、もしターゲット自身が対話的なForthをサポートすることを期待されるなら、クロスコンパイラによってはヘッドをターゲット内に配置するかもしれない。
から紙の地紙はもともと檀紙（楮紙）や鳥の子紙（雁皮紙）が使われ、「京から紙」は主に鳥の子紙と奉書紙が用いられた。斐紙（ひし）と呼ばれていた雁皮紙は、特にその薄様が平安時代に貴族の女性達に好んで用いられ、「薄様」が通り名となっていた。この雁皮紙が鳥の子と称されるようになるのは、南北朝時代頃からである。足代弘訓の『雑事記』の嘉暦3年（1328年）の条に「鳥の子色紙」の文字があり、『愚管記』の延文元年（1356年）の条に、「料紙鳥子」とあり、さらに伏見宮貞成親王の『看聞日記』永享7年（1431年）の条にも「料紙（りょうし）鳥子」の文字が見える。平安の女性的貴族文化の時代から、中世の男性的武士社会にはいって、厚用の雁皮紙が多くなり、薄様に対してこれを鳥の子紙と呼んだ。近世に入ると雁皮紙はすべて鳥の子紙と呼ぶようになった。『宣胤卿記』の長享2年（1488年）の条に「越前打陰」（鳥の子紙の上下に雲の紋様を漉き込んだもので、打雲紙ともいう）、文亀2年（1502年）の条に「越前鳥子」の文字が記されている。「越前鳥子」の文字は他の史料にも多くあり、室町中期には越前の鳥の子が良質なものとして、持てはやされるようになっている。 この鳥の子紙に木版で紋様を施したのが「から紙」である。紙に紋様をつける試みは中国の南北朝時代に始まり隋・唐時代に発展した。日本でも奈良時代から行われ、中国の木版印刷による「紋唐紙」をまねて「から紙」作りが試みられ、「唐紙」にたいして「からかみ」と称した。京の紙加工の工人によってさまざまの独自の工夫が施され、量産されるようになって「ふすま」用の「から紙」に用いられるようになった。さらに木版印刷の技術の蓄積により、江戸時代になって千代紙として庶民にも親しまれるようになった。