extLP for ver.
拡張辞書 extLP は、 簡易的な文芸的プログラミング(Literate Programming)を実現するための拡張辞書です。
この拡張辞書では、ワード <!DOCTYPE と </code> を /* の別名とし、 ワード </html> と <code> を */ の別名とします。 これにより、次に示すような HTML ファイルそのものを Paraphrase のプログラムとして 読み込むことが可能となります。 もちろん、この HTML ファイルをブラウザで閲覧することにより、 通常の HTML 文書としても使用することが可能となります。 もちろん、css を用いたスタイルの指定もできます。
注:"ext/extLP.so" import (Windows の場合は extLP.dll)とすれば、 以下の HTML ファイルは Paraphrase の正しいプログラムリストとして解釈されます。
↓ DOCTYPE タグでコメント開始
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="sample.css">
<title>switch - dispatch の使い方</title>
</head>
<body>
<h1>switch - dispatch の使い方</h1>
C などのプログラミング言語同様、
Paraphrase でも switch ワードにより複数の条件分岐が可能です。
(中略)
使用方法を以下に示します。
<code> ←ここでコメント終了
↓ 以下、有効な(=コメントではない)コード
"FizzBuzz" :
switch
case 15 % 0? -> "FizzBuzz" break
case 5 % 0? -> "Buzz" break
case 3 % 0? -> "Fizz" break
dispatch
;
</code> ← 再びコメント開始
上記のコードで定義している FizzBuzz ワードは、
(中略)
</body>
</html> ← /html タグでコメント終了
上記の HTML ファイルを FizzBuzz.html とすると、
> "ext/extLP.so" import
ok.
> "FizzBuzz.html" load
ok.
> 10 20 do i FizzBuzz . loop
Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz ok.
本拡張辞書は、以下のコードと同等です。
"<!DOCTYPE" "/*" alias
"<!doctype" "/*" alias
"</html> "*/" alias
"<code" "*/" alias
"<code>" "*/" alias
"</code>" "/*" alias
Forth や Factor では入力バッファにアクセスすることで (ワードからスキャナを操作することで) コメントを実現していますが、 Paraphrase では新たな実行モード(シンボルモード)を導入しているため、 スキャナを操作することなくワードとしてコメントの終了機能を実現しています。 加えて、Forth 系ということもあり、 HTML タグと同名のワードも定義・使用できます。 Paraphrase は、このような特徴を有しているため、 タグ名と同じワードをコメントの開始・終了ワードの別名として定義するだけで、 簡易的文芸的プログラミングが実現できます。