Whitespace
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Whitespace_in_vim2-recolored.png/220px-Whitespace_in_vim2-recolored.png)
タブ
スペース
Whitespace(ホワイトスペース)は、プログラミング言語のひとつであり、またそれを動作させるインタプリタを指している。WhitespaceはGPLにより配布されている。実用言語ではない難解プログラミング言語のひとつ。
本来 "whitespace" とは「空白」や「余白」を意味する英単語である。多くの一般的なプログラミング言語では空白に相当する文字(スペース、タブ、言語によっては改行も)は他の言語要素間の区切りとして使われている。しかし、言語 Whitespace においてはプログラムは空白文字だけで構成される(それ以外の文字列はコメント扱いで無視される)。そのため、一見するとプログラムであることすらわからないという珍しい言語である[1]。
実例
ソースコードに添付されているサンプルコード[2]をWhitespaceインタプリタに渡すと以下のように動作する。
$ ./wspace examples/hworld.ws Hello, world of spaces!
文法
IMP (Instruction Modification Parameter)、コマンド、パラメータの3つ組で命令を表現する[3]。
IMPとしては、以下の物がある[4]
- [Space] スタック操作
- [Tab][Space] 演算
- [Tab][Tab] ヒープアクセス
- [LF] フロー制御
- [Tab][LF] I/O
数値は二進記数法で表現する。[Space]が0で、[Tab]が1で、[LF]が終端記号である。
スタック操作
- [Space] 数値:数値をスタックに積む
- [LF][Space]:スタックの一番上を複製する
- [Tab][Space] 数値:スタックのn番目をコピーして一番上に積む [要出典]
- [LF][Tab]:スタックの1番目と2番目を交換する
- [LF][LF]:スタックの一番上の物を捨てる
演算
- [Space][Space]:加算
- [Space][Tab]:引き算
- [Space][LF]:かけ算
- [Tab][Space]:割り算
- [Tab][Tab]:剰余
脚注
[脚注の使い方]