module Arg: sig end
このモジュールは、プログラムに与えられたコマンドラインオプションや引数を展開する汎用的なメカニズムを提供します。
コマンドラインの文法は以下の通りです。キーワードは -
で始まる文字列です。オプションはキーワードのみのものと、引数が続くものがあります。キーワードの型には Unit
、Set
、Clear
、String
、Int
、Float
、Rest
があります。Unit
、Set
、Clear
キーワードは引数をとりません。String
、Int
、Float
キーワードはコマンドラインで次にある語を引数に取ります。Rest
キーワードはコマンドラインの残りを (文字列) 引数に取ります。キーワードがなく引数が現れたものは、匿名引数と呼ばれます。
例 (cmd
はコマンド名と仮定します) 。
cmd -flag
(unit オプション)cmd -int 1
(1
を引数に取る int オプション)cmd -string foobar
("foobar"
を引数に取る string オプション)cmd -float 12.34
(12.34
を引数に取る float オプション)cmd a b c
("a"
、"b"
、"c"
の 3 つの匿名引数)cmd a b -- c d
(2 つの匿名引数と、2 つの引数を取る rest オプション)type spec =
| |
Unit of |
(* | Call the function with unit argument | *) |
| |
Set of |
(* | Set the reference to true | *) |
| |
Clear of |
(* | Set the reference to false | *) |
| |
String of |
(* | Call the function with a string argument | *) |
| |
Int of |
(* | Call the function with an int argument | *) |
| |
Float of |
(* | Call the function with a float argument | *) |
| |
Rest of |
(* | 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
は匿名引数があったとき呼ばれる関数です。spec
と anonfun
の関数はコマンドラインに与えられた順に呼び出されます。
Arg.parse
を実行中エラーが発生したら、以下のエラーメッセージを出力して終了します。
usage_msg
doc
の一覧-
で始まる匿名引数を指定したい方は、例えば ("-", 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
spec
と anonfun
の関数内では例外 Arg.Bad
を発生することができます。例外は無効な引数を拒否するエラーメッセージを引数にとります。val usage : (string * spec * string) list -> string -> unit
Arg.usage speclist usage_msg
はオプションのリストとエラーメッセージを出力します。これは Arg.parse
でエラーが発生した場合と同じです。speclist
と usage_msg
は Arg.parse
と同じです。val current : int Pervasives.ref