Whitespace処理系つくったの忘れてた。
かんたん言語Whitespaceの処理系つくったの忘れてた。
http://konbu.s13.xrea.com/lib/lang/c/ws_20080503.tar.bz2
Whitespaceっていう言語はForthライク(といって良いと思うたぶん)な小さなスタック型言語。パーサとかもとても簡単に書けるし、brainf*ckなどの処理系をつくるのに飽きた人なんかにおすすめですね。
makeすれば普通に動くんじゃないかな。strndupの無い環境だとそこ変えんと駄目。
% make perl parsegen.pl wsparse.def >gencode.c gcc -Wall -c -o parse.o parse.c parse.c: In function ‘read_String’: parse.c:80: warning: implicit declaration of function ‘strndup’ parse.c:80: warning: incompatible implicit declaration of built-in function ‘strndup’ gcc -Wall -c -o vm.o vm.c gcc -Wall -c -o wspace.o wspace.c gcc parse.o vm.o wspace.o -Wall -o wspace
警告でてるけど気にしない。よくわからんけどstrndupの警告がまったくとれない。string.hもちゃんと読んでるというのに。 id:masa_edwさんの指摘でわかりましたけど、strndupはGNU拡張なのでstring.hをインクルードするときにマクロ_GNU_SOURCEが有効になってないといけませんね。具体的には#include
% ./wspace examples/hworld.ws Hello, world of spaces!
なんかまあ実行できる。