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?!
これはたぶんアセンブラに逐語訳できる。つまりはネイティブ化も可能かもね。