ドキュメントを定義するだけのフォームを認識するように、schemedoc-extractor.scm を拡張。
define-doc を追加しました。
何がうれしいか?
処理系内部に C++ で実装された Scheme 手続きのドキュメントを *.scm なファイルに書けるようになります。
; define-doc は何もしない (define-macro (define-doc . more) `()) ; ドキュメントを書く ;; Return the first sublist of list whose car satisfies a given condition, where the sublists of lists are the lists returned by (list-tail list k) for k less than the length of list. ;; .form (memq obj list) ;; .pre-condition Proc should accept one argument and return a single value. Proc should not mutate list. ;; .returns The first sublist of list whose car satisfies a given condition, where the sublists of lists are the lists returned by (list-tail list k) for k less than the length of list. (define-doc (memq) ...)
変更ソース
; return whether form is a define form: (define (define-form-scheme-doc? form) (and (list? form) (> (length form) 1) (or (eq? (car form) 'define) (eq? (car form) 'define-syntax) (eq? (car form) 'define-doc)))) ; Return the signature (a list) of define-form. ; Define form is supposed to be a proper list which satisfies the predicate define-form-scheme-doc? (define (signature-of-define-form define-form) (cond ((and (eq? (first define-form) 'define) (pair? (second define-form))) (cadr define-form)) ((and (eq? (first define-form) 'define) (symbol? (second define-form))) (if (lambda-form? (third define-form)) (cons (second define-form) (second (third define-form))) (second define-form))) ((eq? (first define-form) 'define-syntax) (second define-form)) ((eq? (first define-form) 'define-doc) (second define-form)) (else (laml-error "signature-of-define-form: Unknown composition of define-form:" define-form))))