我90%确信答案在asdf文档的这一段中,但我似乎无法理解。我想知道我是否能够将不以".lip"结尾的源文件作为文件组件。例如,通常我有类似的东西
(asdf:defsystem #:hash-bang-lang
:serial t
:depends-on (#:named-readtables)
:components ((:file "package")
(:file "hash-bang-lang")))
正如您所看到的:文件组件没有指定扩展名。我想知道我是否可以加载不以".lisp".结尾的lisp文件
我想要这个的原因有点奇怪,但对问题没有影响,所以可以跳过下一个部分。
我有一些文件"test.mylang",它从以下开始
(in-package :hash-bang-lang)
(in-readtable hash-bang)
#!mylang
..rest of file..
#!mylang
是一个阅读器宏,它为我的#'mylang函数提供了解析文件其余部分的控制。所以,如果我有一个python的解析器,我会使用#!python和我的#'python函数将负责解析。在这种情况下,我希望有.mylang
或.py
扩展名,这样编辑器就可以立即知道如何突出显示代码,即使它无论如何都要加载为lisp。
感谢各位
:file
组件类型强制文件扩展名为.lisp
。如果您需要其他扩展,则需要一个新的组件类型。
(defpackage #:mylang-system
(:use #:cl #:asdf))
(in-package #:mylang-system)
(defclass mylang-file (cl-source-file)
((type :initform "mylang")))
(defsystem test-ext
:encoding :utf-8
:components ((:file "package")
(:mylang-file "hash-bang-lang")))