Пробел - Енциклопедия на езиците за програмиране

Whitespace е популярен езотеричен език за програмиране, известен с факта, че изходният код на програмата се състои само от непечатаеми символи.

Всички езикови команди се състоят от три типа знаци: интервал (интервал, ASCII 32), раздел (Tab, ASCII 9) и нов ред (LF, ASCII 10). Самите команди са доста дълги (обикновено 3-4 знака) и има много от тях; те се организират чрез използване на префикс (така нареченият параметър за модификация на инструкциите), който обозначава вида на инструкцията: операции на стека, аритметика, достъп до купчина, контрол на програмния поток, I/O.

Езиковата виртуална машина е оборудвана със стек и купчина, които могат да обработват цели числа с произволна ширина. Стекът се използва за изпълнение на команди, а купчината действа като хранилище за данни.

Езикът използва само един тип данни - цели числа в двоично представяне. Числото започва с посочване на неговия знак (интервал - положителен, Tab - отрицателен), последван от двоичен запис на абсолютната стойност на числото (интервал - 0, Tab - 1) и LF, сигнализиращ края на числото.

Етикетът е произволен списък с интервали и раздели, завършени с емисия на редове. Етикетите се използват за контрол на потока на изпълнение на програма и трябва да бъдат уникални в рамките на програмата.

Езикови команди (групирани по тип):

Стек операции

  • Space-Space-Number: добавете число към стека
  • Space-LF-Space: дублирайте номера в горната част на стека
  • Space-LF-Tab: разменете горните два елемента в стека
  • Space-LF-LF: извадете горния елемент от стека и го изхвърлете
  • Space-Tab-Space-Number: копирайте N-ия елемент на стека (индексът, даден от аргумента) в горната част на стека
  • Space-Tab-LF-Number: Преместете N елемента от стека, като същевременно запазите горната част