psyntax 最新版への道 3
今日も昼過ぎから psyntax をいじっていたが夕方頃に気付いた。そもそも展開時の psyntax の使い方を間違えていた。
psyntax-rev10 を展開するには mosh -b と psyntax-rev0 を利用しないといけないのだ。ロールバックしてやり直し。
準備
mkdir rev0_to_10 cd rev0_to_10 bzr branch lp:~leppie/r6rs-libraries/ironscheme.dev -r10 psyntax-rev10 rm -rf psyntax-rev10/.bzr cp -r ~/mosh/tools/psyntax-r6rs/psyntax psyntax rm -rf psyntax/.svn cp ~/mosh/tools/psyntax-r6rs/psyntax-buildscript-mosh.ss .
psyntax-buildscript-mosh.ss
(define scheme-library-files '("psyntax-rev10/compat.ss" "psyntax-rev10/internal.ss" "psyntax-rev10/config.ss" "psyntax-rev10/library-manager.ss" "psyntax-rev10/builders.ss" "psyntax/expander-mosh.ss" "~/mosh/lib/mosh/condition.ss" "~/mosh/lib/mosh/io/conditions.ss" "~/mosh/lib/mosh/unicode.ss" "psyntax/main.ss"))
Makefile
all: ~/mosh/mosh -b psyntax-buildscript-mosh.ss
さて始めましょう
make!
Condition components: 1. &error 2. &message: "cannot find library" 3. &irritants: ((ironscheme reader))
psyntax-rev10/compat.ss の (ironscheme reader) をコメントアウト。
Condition components: 1. &error 2. &who: import 3. &message: "cannot find identifier" 4. &irritants: (compile-core)
compile-core はバックエンドが提供するものみたい。ただ求められている動きが分からないので psyntax-rev10/compat.ss に
(define (compile-core . x) (apply error 'comile-core "not implementated" x))
expanding psyntax-rev10/compat.ss Condition components: 1. &error 2. &who: expander 3. &message: "unbound identifier" 4. &irritants: (read-annotated)
psyntax-rev10/compat.ss
(define read-annotated read) (define (annotation-stripped x) x) (define (annotation? x) #f) (define (annotation-source x) '()) (define (annotation-expression x) x)
Condition components: 1. &error 2. &who: expander 3. &message: "cannot export unbound identifier" 4. &irritants: (make-record-printer)
make-record-printer は IronScheme バックエンドが提供していて
(define rp (make-record-printer 'name printer))
のように使われる。
とりあえず
(define (make-record-printer name printer) (lambda x (display "record printer") (for-each display x)))
expanding psyntax-rev10/compat.ss Condition components: 1. &error 2. &who: expander 3. &message: "cannot export unbound identifier" 4. &irritants: (serialize-library)
(define (serialize-library . x) (error 'serialize-library "not implementated" x)) (define (load-serialized-library . x) (error 'load-serialized-library "not implementated" x))
お。次のファイルに進んだ。
expanding psyntax-rev10/internal.ss Condition components: 1. &error 2. &message: "cannot find library" 3. &irritants: ((ironscheme pretty-print))
コメントアウトした。
Condition components: 1. &error 2. &who: expander 3. &message: "cannot export unbound identifier" 4. &irritants: (compile-core-expr)
internal.ss で need-quote-hack? のコメントアウトがおかしかったのが原因。
Condition components: 1. &error 2. &who: expander 3. &message: "unbound identifier" 4. &irritants: ((pretty-print ((rewriter #f) x) p))
(define pretty-print write)
またグッと進んだ。
expanding psyntax-rev10/config.ss expanding psyntax-rev10/library-manager.ss Condition components: 1. &error 2. &message: "cannot find library" 3. &irritants: ((ironscheme))
コメントアウトした。
Condition components: 1. &error 2. &who: expander 3. &message: "unbound identifier" 4. &irritants: ((library? x))
続きは明日以降。