| マクロを使ってCurl言語を拡張 |
| 言語拡張 | |||
| 作者 岡田 一志 | |||
| 2008年5月01日(木曜日) 00:00 | |||
|
Curlでは、マクロという機能があります。マクロは、Curl言語を拡張するための機能で、Curlのon、after、for、define-class、define-proc、define-text-proc等のようなものも、実際マクロとして作成されています。そのため、define-procやdefine-classで作成されるようなオブジェクトを生成するものでもありません。 では、サンプルを例に説明していきます。以下のサンプルは、処理の最初・終了または成功時・エラー時に指定した変数をトレースするというものです。
マクロはdefine-macroで定義します。マクロは基本的に同一パッケージ内に定義することができませんので、上記のように外部パッケージとして定義します。 マクロ定義の中身の説明ですが、まずはバインド変数として?ではじまる変数名をセットします。この変数に続くexpressionやstatementsは、識別子であるとかステートメントであるということを指定するためのものです。define-macroの処理部分にはexpand-templateなどを利用し、バインド変数等を組み合わせて、ソースコードを生成するコードを記載します。 マクロの実行には以下のようにします。
実行結果 TRACE[start]10 参考ドキュメント
|
|||
| 最終更新 ( 2008年5月01日(木曜日) 11:33 ) | |||