chr*_*eyn 1 parsing sbcl common-lisp abstract-syntax-tree
如果我运行以下 common lisp 代码:
(print "A")
(print "B")
(print "C - No closing bracket"
Run Code Online (Sandbox Code Playgroud)
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)))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |