正規表現でキーワードリストを作る。

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で何が出来るか考えてみよう。