Whitespace

Ukázka programu ve Whitespace s barevným zvýrazněním syntaxe

Whitespace je humorný ezoterický programovací jazyk vytvořený Edwinem Bradym a Chrisem Morrisem, představený 1. dubna 2003. Veškerá syntaxe jazyka sestává z bílých znaků (mezer, tabulátorů a konců řádek; anglicky se označují jako whitespace, odtud název), veškeré jiné znaky (písmena, čísla, symboly atd.) jsou ignorovány.

Whitespace je imperativní jazyk běžící na virtuálním stroji v podobě zásobníkového počítače vybaveného haldou.

Syntaxe

Program je tvořen posloupností příkazů, z nichž každý sestává z řetězce významných symbolů (mezerník SP, tabulátor TAB, znak konce řádky LF), jiné symboly jsou zcela ignorovány. Před každým příkazem je označení typu příkazu:

OznačeníTyp příkazu
SPManipulace se zásobníkem
TAB SPAritmetický příkaz
TAB TABPráce s haldou
LFŘídící příkazy
TAB LFVstup/výstup

Čísla (která se vyskytují jako parametry některých příkazů) mohou být libovolně velká, zadávají se v binárním zápisu jako posloupnost znaků SP a TAB (reprezentující 0, resp. 1) a ukončená znakem LF. První znak určuje znaménko – číslo začínající SP je kladné, číslo začínající TAB je záporné.

Návěští jsou tvořena libovolnou posloupností znaků SP a TAB ukončenou LF. Tyto posloupnosti musí být jednoznačné (nesmí se v programu opakovat).

Instrukce pro práci se zásobníkem

Na zásobník lze ukládat celá čísla libovolné velikosti.

PříkazParametrVýznam
SPČísloUložit číslo na zásobník.
LF SPZduplikovat číslo na vrcholu zásobníku.
TAB SPČísloOkopírovat n-tou položku zásobníku na jeho vrchol.
LF TABZaměnit horní dvě položky zásobníku.
LF LFZahodit vrchní položku zásobníku.
TAB LFČísloZahodit n položek ze zásobníku těsně pod vrchní (tu ponechat).

Aritmetické instrukce

Ve Whitespace se pracuje pouze s celými čísly, v aktuální verzi nejsou čísla s plovoucí řádovou čárkou podporována.

Aritmetické instrukce provedou zadanou operaci se dvěma vrchními čísly, která ze zásobníku vyjmou, a výsledek uloží na zásobník. První (hlouběji) uložené číslo je považováno za levý operand.

PříkazParametrVýznam
SP SPSčítání
SP TABOdčítání
SP LFNásobení
TAB SPCeločíselné dělení
TAB TABZbytek po celočíselném dělení

Instrukce přístupu k haldě

Halda je adresována celými čísly uloženými na vrcholu zásobníku. Při čtení je adresa na zásobníku nahrazena hodnotou z haldy, při zápisu je adresa a hodnota ze zásobníku přečtena a vyjmuta.

PříkazParametrVýznam
SPZapsat na haldu
TABPřečíst z haldy

Řídící instrukce

PříkazParametrVýznam
SP SPNávěštíNávěští – označení místa v programu
SP TABNávěštíVolání podprogramu
SP LFNávěštíNepodmíněný skok na návěští
TAB SPNávěštíPodmíněný skok – pokud je na vrcholu zásobníku nula
TAB TABNávěštíPodmíněný skok – pokud je na vrcholu zásobníku záporné číslo
TAB LFKonec podprogramu, návrat za volající instrukci
LF LFKonec programu (povinná instrukce)

Instrukce vstupu a výstupu

Whitespace obsahuje instrukce umožňující komunikaci s uživatelem. Instrukce pro vstup ukládají přečtené hodnoty do haldy, na adresu obsaženou na zásobníku.

PříkazParametrVýznam
SP SPVypsat znak na vrcholu zásobníku
SP TABVypsat číslo na vrcholu zásobníku
TAB SPPřečíst znak a uložit ho na adresu uvedenou na vrcholu zásobníku
TAB TABPřečíst číslo a uložit ho na adresu uvedenou na vrcholu zásobníku

Externí odkazy

Média použitá na této stránce

Whitespace in vim2.png

Whitespace Hello World

A hello world example in the programming language en:Whitespace. The space and tab characters are highlighted in order to make a screenshot possible.

Vim GUI is removed because of copyright concerns.

  tabs
  spaces