gokuro デモページ gokuro の解説はこちら。C, Go, Node.js の実装が GitHub レポジトリにあります。 入力 これは gokuro 言語のデモページです。ここにある文字列の処理結果が「出力」の欄に表示されます。 gokuro 言語では次のようにマクロを定義します: #+MACRO: language_name gokuro マクロは次のように呼び出します: hello <<<language_name>>>! マクロの呼び出しは本体で置き換わります。 マクロでは引数が使えます。マクロの本体に $1, $2, ... $9 が含まれると、その部分は対応する引数で置き換わります。つまり $1 は一番目の引数、$2 は二番目の引数などとなります。マクロの呼び出しへ引数を渡すには <<<NAME(arg1,arg2,...)>>> とします: #+MACRO: greeting hello $1! <<<greeting(gokuro)>>> $0 は引数として渡される文字列全体で置き換わります: #+MACRO: explain Arguments are $0. <<<explain(x,y,z)>>> "#+MACRO: NAME BODY" という形の行が定義するのは "グローバルな" マクロであり、それ以降の文書内のどこからでも利用可能になります。 これに対して "#+MACRO_LOCAL: NAME BODY" という形の文は "ローカルな" マクロを定義します。ローカルなマクロは次の行でのみ有効になります: #+MACRO: greeting <<<LEFT>>>hello gokuro!<<<RIGHT>>> #+MACRO_LOCAL: LEFT LLL #+MACRO_LOCAL: RIGHT RRR <<<greeting>>> #+MACRO_LOCAL: LEFT -> <<<greeting>>> <<<greeting>>> 以上が gokuro の持つ特別な構文の全てです。 gokuro の実行は高速です。ここにテキストを入力するとすぐに出力が更新されます。 出力