Whitespace
Author
Albert FloresUká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 |
---|---|
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. +more 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říkaz | Parametr | Význam |
---|---|---|
SP | Číslo | Uložit číslo na zásobník. +more |
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
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. +more
. 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ě
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. +more
. Příkaz Parametr Význam SP - Zapsat na haldu TAB - Přečíst z haldy
Řídící instrukce
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
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. +more
. 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
[url=https://web. archive. +moreorg/web/20050403024842/http://compsoc. dur. ac. uk/whitespace/index. php]Domácí stránka[/url] * [url=http://developers. slashdot. org/article. pl. sid=03/04/01/0332202]Oznámení na Slashdotu[/url].
Kategorie:Programovací jazyky Kategorie:Ezoterické programovací jazyky