Common lisp 选择asdf defsystem中:文件组件的扩展名
我90%肯定答案是正确的,但我似乎无法找到答案。 我想知道我是否能够将不以“.lisp”结尾的源文件作为文件组件。例如,通常我有类似的Common lisp 选择asdf defsystem中:文件组件的扩展名,common-lisp,reader-macro,Common Lisp,Reader Macro,我90%肯定答案是正确的,但我似乎无法找到答案。 我想知道我是否能够将不以“.lisp”结尾的源文件作为文件组件。例如,通常我有类似的 (asdf:defsystem #:hash-bang-lang :serial t :depends-on (#:named-readtables) :components ((:file "package") (:file "hash-bang-lang"))) 如您所见:文件组件未指定扩展名。我想知道是否可以加载
(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
是一个reader宏,它为my#mylang函数提供解析文件其余部分的控制。因此,如果我有python解析器,我会使用#!python和my#'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")))
我认为通过使用
#p“foo.py”
,它可能会工作(如(:file#p“foo.py”)
。在尝试加载系统hash-bang-lang的定义时,恐怕不会出现错误。对于泛型函数..FIND-COMPONENT..使用(##p“test.py”)调用时没有适用的方法
谢谢,这将给我一个调查asdf扩展机制的借口,它已经在我的待办事项列表上一段时间了