Введение

Эзотерический язык программирования

Язык программирования Шекспир (SPL) — это эзотерический язык программирования, разработанный Джоном Ослундом и Карлом Вибергом. Подобно языку программирования Chef, он создан таким образом, чтобы программы выглядели как нечто отличное от программ — в данном случае, шекспировские пьесы. Список персонажей в начале программы объявляет несколько стеков, закономерно с именами вроде "Ромео" и "Джульетта". Эти персонажи вступают в диалог, в котором они манипулируют верхними значениями друг друга, помещают и извлекают значения из стеков друг друга, а также выполняют ввод-вывод. Персонажи также могут задавать друг другу вопросы, которые работают как условные операторы. В целом, модель программирования очень похожа на язык ассемблера, но значительно более многословна.

Название

Первая строка в программе Шекспира называется "заголовок". Компилятор рассматривает все от первой строки до первой точки как комментарий.

Акты и сцены

Код в пьесах Шекспира разбит на акты, которые содержат сцены, в которых взаимодействуют персонажи (переменные). Каждый акт и сцена пронумерованы римскими цифрами и служат меткой перехода (GOTO). Любой код после двоеточия считается комментарием. Они записываются в следующем формате:
Акт I: Оскорбления и лесть Гамлета. Сцена I: Оскорбление Ромео.

Линии

Линии представляются в виде диалога, произнесенного персонажем, и состоят как минимум из одного предложения. Каждое предложение может присвоить переменной новое значение, указать переменной вывести свое значение или получить ввод. Линии также могут манипулировать стеками или выполнять функции условного перехода (if/then) или перехода по метке (goto). Линия начинается с имени персонажа и двоеточия. Поскольку этот персонаж говорит, другой персонаж на сцене является переменной, к которой обращаются как "Ты", "Вы" или "Вам".

Вход и выход

Линии также могут обращаться к переменной для вывода данных или получения ввода. "Открой свое сердце" выводит числовое значение переменной, а "Говори, что думаешь" – соответствующий символ ASCII. "Слушай свое сердце" или "Открой свой ум" позволяют переменной получить ввод от пользователя: первое – число, а второе – символ.

Нажимание и взрыв стеков

Каждая переменная является стеком. В стек переменной помещается целое число, если строка указывает персонажу "запомнить" подходящее значение, например, "Запомни меня" или "Запомни себя". Верхнее значение стека извлекается (то есть, переменная принимает это значение), если персонажу говорят "вспомнить" что-либо; весь текст после этого слова считается комментарием.