REBOL
REBOLはコンテンツ依存言語であり、ダイアレクト(dialect)と呼ばれるドメイン固有サブ言語をサポートしている。例えば、return という単語の解釈がコンテンツによって変わることを見てみよう。通常、return は関数を完了して呼び出し元に値を返すのに使われる。しかし、Visual Interface Dialect (VID) では、return という単語があるとレイアウトエンジンが改行(carriage return)と解釈し、レンダリングペンを次行の先頭に持っていく。REBOLプログラマは独自のダイアレクトを生成でき、既存のREBOLの単語に別の意味を付与することができる。
ダイアレクトは、REBOLブロックを特定の方法で処理する関数で実装されるのが一般的である(後述の例のように文字列処理での実装もある)。同様に他の関数でも、ネイティブのダイアレクトとREBOLで書かれたダイアレクトを識別可能である。
ダイアレクトの例:
do ダイアレクト - REBOLの通常の do 関数が理解し解釈できる(ネイティブ)。
reduce ダイアレクト - doダイアレクトで結果を集めるよう変更したもの(ネイティブ)
compose ダイアレクト - reduceダイアレクトで括弧だけを評価するよう変更したもの(ネイティブ)