npt-amalgamationの作成
私はnpt
というCommon Lisp処理系を細々と開発しています。
まだ目標であるANSI Common Lispの機能は完成していませんが、
以前紹介したときに言った「sqlite3
みたいにamalgamation
をやってみたい」
というのが先にできたので公開します。
npt-amalgamation
https://github.com/nptcl/npt-amalgamation
npt-amalgamation
とは、npt
のソースコードをまとめて数個のソースファイルにしたものです。
テストケースは除外されていますが、本体のnpt
と同じようにコンパイルできます。
現段階では下記の3つのファイルにまとめました。
lisp.c
lisp.h
shell.c
実行例を示しますが、次のように適当にコンパイルしても何となく動いてしまいます。
$ cc lisp.c shell.c -lm $ ./a.out (defun aaa (x) (if (<= x 1) 1 (* x (aaa (1- x))))) AAA (aaa 111) 1762952551090244663872161047107075788761409536026565516041574063347346955087248316436555574598462315773196047662837978913145847497199871623320096254145331200000000000000000000000000 ^D $