Parsing 在程序中使用ocaml参数

Parsing 在程序中使用ocaml参数,parsing,ocaml,Parsing,Ocaml,我正在尝试创建一个ocaml程序,用户在其中输入类似于命令行参数的输入,例如 ./program $ -s foo -i 84 $ -s bar -i 22 …基本上是一个简单的菜单程序 我希望能够使用ocaml来实现这一点(特别是内置了“用法”等),但我意识到这只是为了命令行。是否有办法将此库重新用于程序内用户输入,还是最好从库中拼凑一些东西或完全不同的解决方案?(请注意,模块名称是Arg,而不是Args) 如果您愿意编写代码将行分解为单词,那么该函数似乎完全可以实现您想要的功能 (请注意,

我正在尝试创建一个ocaml程序,用户在其中输入类似于命令行参数的输入,例如

./program
$ -s foo -i 84
$ -s bar -i 22
…基本上是一个简单的菜单程序

我希望能够使用ocaml来实现这一点(特别是内置了“用法”等),但我意识到这只是为了命令行。是否有办法将此库重新用于程序内用户输入,还是最好从库中拼凑一些东西或完全不同的解决方案?

(请注意,模块名称是
Arg
,而不是
Args

如果您愿意编写代码将行分解为单词,那么该函数似乎完全可以实现您想要的功能


(请注意,在类Unix系统中,将行分解为单词的是shell,而不是
Arg
模块。因此,要以这种方式使用
Arg
,您必须执行shell将执行的操作。)

感谢Jeffrey提供了正确的API调用。。。起初,我不知道如何多次使用该调用(因为值将被设置为您只给出的第一个集),诀窍是必须使用可选参数
?current:(Some(ref 0))
才能多次使用该调用

这是我的代码,如果它对其他人有帮助的话(注意,我没有检查错误等):

汇编:

ocamlc str.cma -o args args.ml
提供该命令的命令:

set -d 8332 -s lalalla
set -d 11111 -s fffffff
set -d 8332 -s lalalla
set -d 11111 -s fffffff