命令行参数

我们可以通过文件加载函数添加一些其他编程语言的典型功能。 当文件名作为参数提供给命令行时,我们会去尝试运行这些文件。 例如,要运行python文件,可以编写python filename.py

使用赋给main的argcargv变量来访问这些命令行参数。 argc变量给出了参数个数,argv则指定每个字符串。 argc总是设置为至少为1,其中第一个参数始终为所调用的完整命令。

这意味着如果argc设置为1,我们调用解释器,否则通过builtin_load函数运行每个参数。

  1. /* Supplied with list of files */
  2. if (argc >= 2) {
  3. /* loop over each supplied filename (starting from 1) */
  4. for (int i = 1; i < argc; i++) {
  5. /* Argument list with a single argument, the filename */
  6. lval* args = lval_add(lval_sexpr(), lval_str(argv[i]));
  7. /* Pass to builtin load and get the result */
  8. lval* x = builtin_load(e, args);
  9. /* If the result is an error be sure to print it */
  10. if (x->type == LVAL_ERR) { lval_println(x); }
  11. lval_del(x);
  12. }
  13. }

现在写一些基础程序并尝试去以命令行参数的方式去调用。

  1. lispy example.lspy