正規表現でキーワードリストを作る。
arcにはoblistとかdo-symbolsがなさそうなので、外部でキーワードリストを作る。
昔HSPで正規表現が使えなかった頃は、条件をプログラムで書き下してたけれど、
もうそんな時代でもないのでちゃちゃっと書く。
キーワードにしたいものは、『行頭(def か(mac で始まる、スペースまでの語句。そのうち、範囲指定のための固定部分は省略する。』
なので、xyzzy上でarc.arcを開いて、次の式を評価すればいい。
インタプリタだと適当にやればいいから楽だね。
(save-excursion (set-buffer (find-buffer "arc.arc")) (goto-char (point-min)) (with-open-file (with "~/arc" :direction :output :if-exists :append :if-does-not-exist :create) (format with ";*0") (while (scan-buffer "^.\\(def\\|mac\\|set\\) \\([^ \t]+\\) " :tail t :no-dup t :regexp t) (format with "~a~%" (match-string 2)))))
このくらいなら簡単。scan-bufferで:tail tを付けなくて、一回無限ループを作ったけど……。
whileってC-gで抜け出せないのね。自動保存があって助かったw
これだけだと、もともと定められている関数や、変数が色づけされていないので、気になったところだけ手作業で付け足す。
;0 fn set if is car cdr cons apply disp type ssyntax err coerce scdr maptable writec ccc ;*2 nil t
非常に少ない。とはいえ、まだ分かってない関数もあるけど。
これでキーワードは259個。このくらいは覚えておいた方が、後々楽になるかな。
次はお絵描きソフトを作りたいから、openglとか使えると良いんだけど。
そういう、出力的なところはどうなんだろう。
clispなら広く使われてるから、ライブラリが使えるようになってる。
schemeで使えるものはarcでも使えたりするのかな。
まあ、試験段階の言語でそういう心配をしても仕方がない。ひとまず、arcで何が出来るか考えてみよう。