Whitespace

humorný ezoterický programovací jazyk

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.

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

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

Syntaxe

editovat

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
SP Manipulace se zásobníkem
TAB SP Aritmetický příkaz
TAB TAB Práce s haldou
LF Řídící příkazy
TAB LF Vstup/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

editovat

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

Příkaz Parametr Význam
SP Číslo Uložit číslo na zásobník.
LF SP Zduplikovat číslo na vrcholu zásobníku.
TAB SP Číslo Okopírovat n-tou položku zásobníku na jeho vrchol.
LF TAB Zaměnit horní dvě položky zásobníku.
LF LF Zahodit vrchní položku zásobníku.
TAB LF Číslo Zahodit n položek ze zásobníku těsně pod vrchní (tu ponechat).

Aritmetické instrukce

editovat

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říkaz Parametr Význam
SP SP Sčítání
SP TAB Odčítání
SP LF Násobení
TAB SP Celočíselné dělení
TAB TAB Zbytek po celočíselném dělení

Instrukce přístupu k haldě

editovat

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říkaz Parametr Význam
SP Zapsat na haldu
TAB Přečíst z haldy

Řídící instrukce

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

Instrukce vstupu a výstupu

editovat

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říkaz Parametr Význam
SP SP Vypsat znak na vrcholu zásobníku
SP TAB Vypsat číslo na vrcholu zásobníku
TAB SP Přečíst znak a uložit ho na adresu uvedenou na vrcholu zásobníku
TAB TAB Přečíst číslo a uložit ho na adresu uvedenou na vrcholu zásobníku

Externí odkazy

editovat