Whitespace

提供: miniwiki
2018/8/19/ (日) 20:03時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索
ファイル:Whitespace in vim2-recolored.png
Whitespaceのハロー・ワールド・プログラム。以下のような色付けをしてある。
  タブ
  スペース

Whitespace(ホワイトスペース)は、プログラミング言語のひとつであり、またそれを動作させるインタプリタを指している。WhitespaceはGPLにより配布されている。実用言語ではない難解プログラミング言語のひとつ。

本来 "whitespace" とは「空白」や「余白」を意味する英単語である。多くの一般的なプログラミング言語では空白に相当する文字(スペースタブ、言語によっては改行も)は他の言語要素間の区切りとして使われている。しかし、言語 Whitespace においてはプログラムは空白文字だけで構成される(それ以外の文字列はコメント扱いで無視される)。そのため、一見するとプログラムであることすらわからないという珍しい言語である。

実例

ソースコードに添付されているサンプルコード (hworld.ws) を見てもらいたい。信じられないかもしれないが、このコードをWhitespaceインタプリタに渡すときちんと動作する。

$ ./wspace examples/hworld.ws                                                  
Hello, world of spaces!

文法

IMP (Instruction Modification Parameter)、コマンド、パラメータの3つ組で命令を表現する。

IMPとしては、以下の物がある

  • [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]:剰余


関連項目

外部リンク