Module Arg


module Arg: sig  end
コマンドライン引数をパーズします。

このモジュールは、プログラムに与えられたコマンドラインオプションや引数を展開する汎用的なメカニズムを提供します。

コマンドラインの文法は以下の通りです。キーワードは - で始まる文字列です。オプションはキーワードのみのものと、引数が続くものがあります。キーワードの型には UnitSetClearStringIntFloatRest があります。UnitSetClear キーワードは引数をとりません。StringIntFloat キーワードはコマンドラインで次にある語を引数に取ります。Rest キーワードはコマンドラインの残りを (文字列) 引数に取ります。キーワードがなく引数が現れたものは、匿名引数と呼ばれます。

例 (cmd はコマンド名と仮定します) 。




type spec =
| Unit of (unit -> unit) (*Call the function with unit argument*)
| Set of bool Pervasives.ref (*Set the reference to true*)
| Clear of bool Pervasives.ref (*Set the reference to false*)
| String of (string -> unit) (*Call the function with a string argument*)
| Int of (int -> unit) (*Call the function with an int argument*)
| Float of (float -> unit) (*Call the function with a float argument*)
| Rest of (string -> unit) (*Stop interpreting keywords and call the function with each remaining argument*)


この型は各キーワードに対応する挙動を指定するのに使います。

val parse : (string * spec * string) list -> (string -> unit) -> string -> unit
Arg.parse speclist anonfun usage_msg はコマンドラインをパースします。speclist は triple (key, spec, doc) のリストで、key はオプションのキーワード (最初の文字は '-' にしてください) です。spec はオプションの型と関数です。コマンドラインでこのオプションを指定された場合はこの関数が呼ばれます。doc はオプションの 1 行説明で、anonfun は匿名引数があったとき呼ばれる関数です。specanonfun の関数はコマンドラインに与えられた順に呼び出されます。

Arg.parse を実行中エラーが発生したら、以下のエラーメッセージを出力して終了します。

- で始まる匿名引数を指定したい方は、例えば ("-", String anonfun, doc)speclist 中に含めるなどしてください。

parse はデフォルトで -help--help の Unit オプションを認識し、どちらかが指定された場合 usage_msg とオプションのリストを表示して終了します。この動作は speclist 中に -help--help を指定すれば自由に変更できます。

val parse_argv : string array ->
(string * spec * string) list -> (string -> unit) -> string -> unit
Arg.parse_argv args speclist anonfun usage_msg は配列 args をコマンドラインだと思ってパースします。
exception Bad of string
specanonfun の関数内では例外 Arg.Bad を発生することができます。例外は無効な引数を拒否するエラーメッセージを引数にとります。
val usage : (string * spec * string) list -> string -> unit
Arg.usage speclist usage_msg はオプションのリストとエラーメッセージを出力します。これは Arg.parse でエラーが発生した場合と同じです。speclistusage_msgArg.parse と同じです。
val current : int Pervasives.ref
処理中の引数の Sys.argv 中での位置です。この値は書き換え可能です (つまり Arg.parse を強制的に指定引数までスキップさせることができます) 。