Forth--

今は簡単なDSLを作りながらXXX(自作言語)に必要なものを考えている。例えばForth風の言語を一つでっちあげてみた。言語系の要素は

  • 無名関数定義 ':' ... ';'
  • 辞書読み '?'
  • 辞書書き '@'
  • プリミティブ実行 '!'
  • 数値 [1-9][0-9]*
  • 識別子 それ以外全部

実行系の要素は

  • スタック
  • 辞書(グローバルのみ)
  • 関数

のみ。説明は省くが下のような入力に対して無限に'LOOP\n'を表示する。

CALLCC {
  CALLCC .?! <CR>?!
  R>?! DUP?! >R?!
  JUMP?!
}@
MAIN .?! <CR>?!
CALLCC? >R?! CALL?!
LOOP .?! <CR>?!
DUP?! >R?! CALL?!

これはたぶんアセンブラに逐語訳できる。つまりはネイティブ化も可能かもね。