WiLiKi:開発:マクロ構文

WiLiKi:開発:マクロ構文

WiLiKi:WishListで上がったもののうち、いくつかは マクロ構文のデザインに関わっているので、こちらに移動する。

構文そのものに関する考察

現在のマクロ構文の背景と問題

Shiro(2004/01/13 02:50:39 PST): WiLiKi-0.5では、マクロ構文を見直すことを考えている。 互換性のために現在の $name, $$name 形式もサポートするが、将来的に フェードアウトさせるつもり。

もともと、現在のマクロ構文を導入した理由は、「特別扱いするマークアップを 増やしたくない」というものだった。構文が増えれば増えるほど、 テキストを書き込んでゆく際に気をつかわなければならないケースが増える。 double bracketはもともとページ参照に使われていたため、 既に構文であったから、そこにマクロという機構をオーバーロードする ことにしたのだ。

しかし、しばらく使ってみてこの構文に不満を抱き始めた。

また、機能の追加に伴って、特別扱い構文も徐々に増えてきたし、 あまりdouble bracketをオーバーロードする意味も無くなってきた気がする。

候補

最近の流れのひとつは、「プラグイン」ってやつか。 &foo(args ...) とか #foo(args ...) とか。

WiLiKi的には、S式(wiki-dev:document:プラグイン)がよさげ。 引数区切りの構文は明確だし。ただ、S式の問題は、式の終了を知る方法が 括弧の対応にしかないため、ユーザーミスで括弧が対応していない場合に エラーがみつけにくいということがある。通常はエディタ等のサポートを 当てにするのだが、ブラウザで書き込むwikiの場合はそうもいかない。

wiki文法はもともと行指向だし、S式も1行内ってことにしてもいいかな。 どうしても複数行で書きたければ継続行が使えるし。

インライン要素とブロック要素で構文を分ける必要はあるか? formatterが正当なhtmlを吐くことを保証したければ、分けてある方が便利。 しかし書き込む際にいちいちそれを意識するのもめんどくさそうだ。

ただ括弧が出てきたらマクロ、というのでは、地の文との区別がつけにくい。 #(expr...)も、Scheme式によく出てきてしまうから問題がある。それを言えば &(expr...)も、Cのコードを張り付けた時なんかに問題が出そうだ。

SHIMADAさん方式、つまり##(expr ...)でもいいかなあ。 一応、現在の書式とは干渉しない (olにつかう'#'は直後に空白が 必要なので、マクロを行頭から始めても判別可)。


個別の要望

ネスト (引数内でのマクロ展開)

キーワードへのアンカー

S式

マルチラインマクロ

More ...