コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

Whitespace

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Whitespaceのハロー・ワールド・プログラム。以下のような色付けをしてある。
  タブ
  スペース

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


脚注

[編集]
  1. ^ 原悠 2014, p. 77.
  2. ^ hworld.ws”. 2017年3月24日時点のオリジナルよりアーカイブ。2024年1月26日閲覧。
  3. ^ 原悠 2014, p. 78.
  4. ^ 原悠 2014, p. 79.

関連項目

[編集]

外部リンク

[編集]
  • Whitespace
  • 原悠 (2014). Rubyで作る奇妙なプログラミング言語. マイナビ出版. p. 77. ISBN 9784839949532. https://books.google.co.jp/books?id=u2q3DwAAQBAJ&pg=PA77#v=onepage&q&f=false