Язык программирования Шекспира - Shakespeare Programming Language

В Язык программирования Шекспира (SPL) является эзотерический язык программирования разработан Йоном Ослундом и Карлом Хассельстремом.[1] Как и язык программирования Chef, он предназначен для того, чтобы программы выглядели как нечто иное, чем программы - в данном случае шекспировский пьесы.

А характер list в начале программы объявляет количество стеки, естественно с такими именами, как «Ромео» и «Джульетта». Эти персонажи вступают в диалог друг с другом, в котором они манипулируют высшими ценностями друг друга, толкают и выталкивают друг друга и делают Ввод / вывод. Персонажи также могут задавать друг другу вопросы, которые ведут себя как условные утверждения. В целом модель программирования очень похожа на язык ассемблера но гораздо более подробный.

Программирование по Шекспиру

заглавие

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

Dramatis Personae

В этом разделе объявляются переменные. Каждая переменная может содержать целочисленное значение со знаком и имеет следующую форму:

Имя, Описание

куда имя это имя переменной и Описание игнорируется компилятором. Компилятор распознает только те имена, которые соответствуют фактическим шекспировским персонажам.[1]

Акты и сцены

Фрагмент кода в Шекспире разбит на Акты которые содержат Сцены в котором взаимодействуют символы (переменные). Каждый Действовать и Место действия пронумерован римской цифрой и служит ПЕРЕЙТИ К метка. Любой код после двоеточия считается комментарием. Они записываются в виде:

Акт I: Оскорбления и лесть Гамлета. Сцена I: Оскорбление Ромео.

Войти, выйти и выйти

Отдельные строки кода обычно представляют собой диалог, передаваемый одним персонажем другому; так назначается, изменяется или выводится значение переменной (указанный символ). К персонажу можно обращаться только как «ты» или «ты». Таким образом, при произнесении строк «на сцене» обычно должно быть ровно два персонажа: один для разговора, а другой - для разговора.[1] Чтобы вызвать переменную на сцену, Войти команда используется со списком из одного или нескольких символов. В Выход команда сообщает ровно одному из перечисленных персонажей покинуть сцену. Уходят вызывает более одного персонажа для выхода, или в случае, если в списке нет ни одного персонажа, все персонажи покидают сцену.[1] Используется следующий формат:

[Входит Джульетта] [Входят Ромео и Джульетта] [Уходит Ромео] [Уходят Ромео и Джульетта] [Уходят]

Линии

Строки представлены как диалоги, произносимые персонажем, и состоят как минимум из одного предложения. Каждое предложение может присваивать новое значение переменной, указывать переменной на вывод своего значения или направлять ее на получение ввода. Строки также могут управлять стеками или действовать как операторы if / then или goto. Строка начинается с имени персонажа и двоеточия. Поскольку этот персонаж является говорящим, другой персонаж на сцене - это переменная, к которой обращаются как «ты» или «ты».

Константы и присвоение значений

Константы представлены комбинациями существительных и прилагательных; язык распознает конечный список каждого из них, и оба списка разделены на те, которые имеют положительный, отрицательный или нейтральный тон, как их понимают Ослунд и Хассельстрём. Положительные и нейтральные существительные имеют значение 1, а отрицательные существительные имеют значение -1. Любое прилагательное умножает существительное на 2, и прилагательные могут быть составными.[1] Притяжательные местоимения игнорируются анализатором, в то время как слова, относящиеся к основной арифметике, распознаются как операции, такие как «сумма», «частное» и «куб». Предложение, которое присваивает значение персонажу, начинается с «You» или «Thou», при желании может продолжаться словами «are as [any adjective] as», а затем дает математическую формулу в существительных, прилагательных, переменных и операциях для новое значение. Примеры таких строк следующие:[1]

Гамлет: Ты лжец, глупый без отца, большой вонючий, недалекий трус! Джульетта: Ты злодей, как квадратный корень из Ромео!

Математические формулы могут также использовать имена других персонажей (даже если эти персонажи не на сцене), чтобы использовать текущее значение этого символа в вычислении, или «себя» или «себя» для персонажа, с которым разговаривают.

Ввод и вывод

Строки также могут вызывать переменную для вывода или приема ввода. «Открой свое сердце» выводит числовое значение переменной, а «Выскажи свое мнение» выводит соответствующий символ ASCII. «Слушай свое сердце» или «Открой свой разум» заставляй переменную получать ввод от пользователя; первое для числа и второе для символа.[1]

Условные операторы и gotos

Оператор if / then формулируется как вопрос, задаваемый персонажем. Слова «как [любое прилагательное] как» представляют собой тест на равенство, в то время как «лучше» и «хуже» соответствуют большему и меньшему, соответственно. Следующая строка, начинающаяся «если да» или «если нет», определяет, что произойдет в ответ на истинность или ложность исходного условия. Оператор goto начинается с «Давайте», «Мы будем» или «Мы должны», продолжает «вернуться к» или «перейти к», а затем дает действие или сцену. Сцена будет проанализирована как эта сцена в текущем акте; оператор goto не может вызывать сцену в другом действии.[1] Условный оператор для вызова goto будет выглядеть так:[1]

Джульетта: Я лучше тебя? Гамлет: Если да, то приступим к сцене III.

Толкание и выталкивание стопок

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

Пример кода

Это стандарт "Привет мир »(которая выводит или отображает пользователю« Hello World! ») на языке SPL.

The Infamous Hello World Programme. Ромео, молодой человек с удивительным терпением, Джульетта, тоже молодая женщина с замечательной грацией, Офелия, замечательная женщина, много спорящая с Гамлетом, Гамлет, льстец из Andersen Insulting A / S Акт I: Оскорбления и лесть Гамлета. Сцена I: Оскорбление Ромео. [Входят Гамлет и Ромео] Гамлет: Ты лжец, безотцовщица, большой вонючий недалекий трус! Ты глуп, как разница между красивым богатым храбрым героем и тобой! Говорить откровенно! Вы столь же смелы, как сумма вашего толстого фаршированного неправильно использованного пыльного старого гнилого гульфика и прекрасного теплого, мирного, солнечного летнего дня. Вы здоровы, как разница между суммой самой сладкой красной розы и моим отцом и вами! Говорить откровенно! Вы так же трусливы, как сумма самого себя и разница между большим могучим гордым королевством и лошадью. Говорить откровенно. Выскажи свое мнение! [Ромео уходит] Сцена II: Восхваление Джульетты. [Входит Джульетта] Гамлет: Ты сладок, как сумма суммы Ромео, его лошади и его черной кошки! Выскажи свое мнение! [Уходит Джульетта] Сцена III: Восхваление Офелии. [Входит Офелия] Гамлет: Ты прекрасен, как продукт большого сельского городка и моя удивительная бездонная вышитая сумочка. Выскажи свое мнение! Ты такой же любящий, как продукт самого голубого, ясного, сладкого неба и суммы белки и белой лошади. Ты прекрасна, как разница между Джульеттой и тобой. Выскажи свое мнение! [Уходят Офелия и Гамлет] Акт II: За спиной Гамлета. Сцена I: Беседа Ромео и Джульетты [Входят Ромео и Джульетта] Ромео: Выскажи свое мнение. Вы беспокоитесь не меньше, чем о себе и о разнице между моим маленьким гладким хомячком и моим носом. Выскажи свое мнение! Джульетта: Выскажи свое мнение! Ты такой же плохой, как Гамлет! Ты такой же маленький, как разница между квадратом суммы между моим маленьким пони и твоей большой волосатой собакой и кубиком твоего жалкого маленького гульфика. Говорите, что думаете! [Уходит Ромео] Сцена II: Разговор Джульетты и Офелии. [Входит Офелия] Джульетта: Ты равен частному между Ромео и суммой небольшого пушистого зверька и пиявки. Говорите, что думаете! Офелия: Ты отвратительна, как частное между Ромео и вдвое большей разницей между омелой и сочащимся зараженным волдырем! Выскажи свое мнение! [Уходит]

Смотрите также

использованная литература

Встроенные ссылки

  1. ^ а б c d е ж г час я j "Язык программирования Шекспира".

Общие ссылки

внешние ссылки