beflisp.bef が 1次元 Lisp しかサポートしてないのはけしからん、と言われてその通りだなぁと思ったので、 lisp2d.c てのを書いて beflisp2d.bef を生成してみました。 bc2bef.cc は全くいじる必要がありませんでした。 Befunge コードが C 書くだけで作れるってのはラクチンですね…
で、こんなコードが動きます。2次元であることに面白い意味を持たせるアイデアが無かったので、単に 2D レイアウトできるようになっただけです。 Befunge 同様コードが交差できるのは少しオシャレ。気をつけないと括弧のつもりで使った v が文字列の一部になったりするので、書くのはかなり大変
(defun fizzbuzz ^ (fizzbuzz 1) @
^ zzuB ( 0 (5 n dom)
i ^
f v ^ q
( eq ^
^ fi) ^ v m
e o
q l f d
i i
n (mod n 15) 0) Fizzbuzz v n
1 q 3
0 e v
1 (if v
v 0
t v
n n
i i F
l r i
p ^ z
(if v ^ z
1
n
v
n v
v
+ v
v zzubzzif )