JotVM是我很久之前就开始开发的一个项目,经过了很多次尝试,最终我还是决定用D语言来实现第一版的JotVM。
作为一个应用软件,与用户的交互是很重要的封面,所以先让我们来实现一下命令行参数解析吧。
import std.getopt;
import std.stdio;
enum wstring HelpMessage = r"
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
"w;
struct Cmd {
bool helpFlag;
bool versionFlag;
bool jarFlag;
string classpath;
}
Cmd parseCmd(ref string[] args) {
Cmd cmd;
try{
getopt(
args,
"help|?", &cmd.helpFlag,
"version", &cmd.versionFlag,
"jar", &cmd.jarFlag,
"cp|classpath", &cmd.classpath
);
} catch(Throwable e) {
cmd.helpFlag = true;
}
return cmd;
}
利用D的getopt库简单实现了一个命令行解析器,以后还会继续完善。Cmd结构体用来保存解析出来的命令行参数。如果解析失败也会打印Help信息。