gpt4 book ai didi

common-lisp - 选择扩展名 :file component in asdf defsystem

转载 作者:行者123 更新时间:2023-12-02 01:39:26 24 4
gpt4 key购买 nike

我 90% 确定答案在 this paragraph of the asdf documentation 中,但我似乎无法理解它。我想知道我是否能够将不以“.lisp”结尾的源文件作为文件组件。例如,通常我有类似的东西

(asdf:defsystem #:hash-bang-lang
:serial t
:depends-on (#:named-readtables)
:components ((:file "package")
(:file "hash-bang-lang")))

如您所见,:file 组件未指定扩展名。我想知道我是否可以加载不以“.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")))

关于common-lisp - 选择扩展名 :file component in asdf defsystem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com