sbcl 使用 --script 立即解析并执行
sbcl parse and execute immediately with --script
如果我运行以下常见的 lisp 代码:
(print "A")
(print "B")
(print "C - No closing bracket"
sbcl --script ./test.lisp
A 和 B 被打印出来。
之后错误如预期般出现。
SBCL 是否解析第一行(或换句话说“括号内的代码”)并在进入下一部分之前立即执行它?或者它是否解析整个文件并“标记”在 AST 中的特定点存在解析器错误?
它逐表读取内容,与 load
、compile
等的方式相同。它正在做这样的事情(但更复杂):
(defun trivial-script-runner (f)
(let ((*package* *package*))
;; ... and other things
(with-open-file (in f)
(loop for form = (read in nil in)
until (eq form in)
do (eval form)))))
如果我运行以下常见的 lisp 代码:
(print "A")
(print "B")
(print "C - No closing bracket"
sbcl --script ./test.lisp
A 和 B 被打印出来。 之后错误如预期般出现。
SBCL 是否解析第一行(或换句话说“括号内的代码”)并在进入下一部分之前立即执行它?或者它是否解析整个文件并“标记”在 AST 中的特定点存在解析器错误?
它逐表读取内容,与 load
、compile
等的方式相同。它正在做这样的事情(但更复杂):
(defun trivial-script-runner (f)
(let ((*package* *package*))
;; ... and other things
(with-open-file (in f)
(loop for form = (read in nil in)
until (eq form in)
do (eval form)))))