3

答えがasdfドキュメントのこの段落にあると90%確信していますが、理解できないようです。".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 関数が解析を行います。そのような場合、.mylangor.py拡張子を付けて、エディタがコードを強調表示する方法を即座に認識できるようにしたいと思います。

ありがとう

4

1 に答える 1

2

: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")))
于 2015-03-30T15:10:17.337 に答える