static int ParseCommandLine(int argc, char *argv[]) { int i; for (i = 0; i < argc; ++i) { if (strncmp(argv[i], "-ext:", 5) == 0) { ExtName = argv[i] + 5; } else if (strcmp(argv[i], "-ignore") == 0) { i++; AddWhiteSpace(argv[i]); } else if (strcmp(argv[i], "-keyword") == 0) { i++; AddKeyword(argv[i]); } else if (strcmp(argv[i], "--dump-ast") == 0) { DumpAST = 1; } else if (strcmp(argv[i], "--dump-IR") == 0) { DumpIR = 1; } else return i; } return i; }
/* 在参数输入时,以下命令必须在最前边,源文件名在后边 */ static int ParseCommandLine (int argc, char *argv[]) { int i; UserIncPath = CreateVector (1); for (i = 0; i < argc; i++) { if (!strncmp (argv[i], "-ext:", 5)) { /* 设置汇编文件的扩展名 */ ExtName = argv[i] + 5; } else if (!strcmp (argv[i], "-ignore")) { /* 添加要当成空白符处理的字符串 */ AddWhiteSpace (argv[++i]); } else if (!strcmp (argv[i], "-keyword")) { /* 添加用户自定义关键字 */ AddKeyword (argv[++i]); } else if (!strcmp (argv[i], "--dump-ast")) { /* 标志生成语法树 */ DumpAST = 1; } else if (!strcmp (argv[i], "--dump-IR")) { /* 标志是否要生成中间代码 */ DumpIR = 1; } else if (!strcmp (argv[i], "--test-lex")) { test_lex = 1; } else if (!strncmp (argv[i], "-I", 2)) { char *path; path = calloc (strlen (argv[i]+2) + 1, sizeof (char)); strcpy (path, argv[i] + 2); INSERT_ITEM (UserIncPath, path); } else if (!strncmp (argv[i], "-VARINFO=", 9)) { VarInfo = atoi (argv[i] + 9); if (VarInfo > 7 || VarInfo < 0) VarInfo = 0; } else if (!strcmp (argv[i], "--help")) { #define HELP(help) PRINT ("%s\n", help); #include "include/confg/help.h" #undef HELP } else if (!strcmp (argv[i], "--version")) { PRINT ("%s \n", VERSION); } else return i; } return i; }