ブロック解析例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/10 19:20 UTC 版)
ファイル解析ユーティリティがあり、ユーザーが操作すべきファイルを指定し、それをいつ実行し、結果をどこに送り、誰に通知するかということを簡単に指定できるようにしたいとする。ダイアレクトは、この種のタスクに対して、柔軟なテキストベースのインタフェースを提供できる。 ダイアレクトは複数のアイテムを許容し、語順が変動しても問題なく、可読性のために人間が余分な単語を追加してもプログラムの動作には影響を与えない。 ここでは、ユーザーがアプリケーションに送るコマンドセットを2種類定義している。 command-blocks: [ [ analyze %test-1.txt %test-2.txt post results to http://www.wikipedia.org/results.dat notify rebol-xyz@wikipedia.org at 10:00 and again at 10:00pm ] [ at 10:00 and at 10:00pm analyze %test-1.txt notify rebol-xyz@wikipedia.org and reb-guy@wikipedia.org post to ftp://wikipedia.org/results.dat ]]; アポストロフィが前置された単語はマッチさせたいリテラル単語列である。; 感嘆符が後置された単語はマッチさせたいデータ型である。; SOME は "one or more" を意味する。正規表現の "+" に似ている。; OPT はオプションを意味し、ゼロ個でも1個でもよい。; SET マッチした値を後で参照できるよう単語と結びつける。; ちょうど、変数への代入に相当する。foreach block command-blocks [ print mold block parse block [ some [ ['analyze some [set file file! (print file)]] | ['notify some [set who email! opt 'and (print who)]] | ['at set when time! (print when)] | ['post opt 'results 'to set target url! (print target)] | 'again | 'and ] to end ] print ""] この例で、file、email、time、url といったものは全てREBOLにおけるネイティブなデータ型であり、構文解析中にそれらの値を抽出して、直接 REBOL の式に適用可能である。例えば、 who の値は send 関数で電子メール送信に使われ、target の値は write 関数によるデータのポストに使われる。
※この「ブロック解析例」の解説は、「REBOL」の解説の一部です。
「ブロック解析例」を含む「REBOL」の記事については、「REBOL」の概要を参照ください。
- ブロック解析例のページへのリンク