stringtranslate.com

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

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

Список символов в начале программы объявляет несколько стеков , естественно, с именами типа "Ромео" и "Джульетта". Эти персонажи вступают в диалог друг с другом, в котором они манипулируют верхними значениями друг друга, толкают и выталкивают друг друга и выполняют ввод-вывод . Персонажи также могут задавать друг другу вопросы, которые ведут себя как условные операторы . В целом, модель программирования очень похожа на язык ассемблера , но гораздо более многословна.

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

Заголовок

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

Действующие лица

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

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

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

Акты и сцены

Фрагмент кода в Шекспире разбит на , Actsсодержащие Scenesв которых взаимодействуют символы (переменные). Каждый Actи Sceneпронумерован римской цифрой и служит меткой GOTO. Любой код после двоеточия считается комментарием. Они записываются в виде:

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

Вход, выход и вылет

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

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

Линии

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

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

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

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

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

Ввод и вывод

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

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

Оператор if/then формулируется как вопрос, заданный персонажем. Слова «as [любое прилагательное] as» представляют собой проверку на равенство, в то время как «better» и «worse» соответствуют значениям «more than» и «less than» соответственно. Последующая строка, начинающаяся с «if so» или «if not», определяет, что произойдет в ответ на истинность или ложность исходного условия. Оператор goto начинается с «Let us», «We shall» или «We must», продолжается «return to» или «proceed to», а затем указывает действие или сцену. Сцена будет проанализирована как сцена в текущем действии; оператор goto не может вызывать сцену в другом действии. [1] Условный оператор для вызова goto будет выглядеть следующим образом: [1]

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

Вталкивание и выталкивание стеков

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

Пример кода

Стандартная программа «Hello, World!» :

Идея состоит в том, чтобы сгенерировать значения ASCII для каждого символа строки и вывести их с помощью команды "Speak your mind". Например, первая строка диалога, произнесенная Гамлетом, использует комбинацию арифметических операций для присвоения десятичного значения 72 (двоичное 1001000) другому главному герою Ромео, что в ASCII соответствует букве "H".


«Не прощай», пьеса в двух действиях.Ромео — молодой человек с удивительным терпением.Джульетта, тоже молодая женщина, отличающаяся необыкновенной грацией.Офелия — замечательная женщина, часто спорящая с Гамлетом.Гамлет, льстец Андерсена Оскорбление А/С. Акт I: Оскорбления и лесть Гамлета. Сцена I: Оскорбление Ромео.[Входят Гамлет и Ромео]Гамлет: Ты, лживый, глупый, сирый, большой, вонючий, полоумный трус! Ты так же глуп, как разница между красивым богатым храбрецом герой и ты сам! Выскажи свое мнение! Ты такой же храбрый, как сумма твоих маленьких толстых чучел, неправильно использованных, пыльных старый гнилой гульфик и прекрасное, теплое, мирное, солнечное лето день. Вы здоровы настолько, насколько здорова разница между суммой самая сладкая, самая красная роза, и мой отец, и ты сама! Выскажи свое мнение! Ты труслив как сумма тебя самого и разности между большим могучим гордым королевством и лошадью. Выскажи свое мнение. Выскажите свое мнение![Выход Ромео] Сцена II: Восхваление Джульетты.[Входит Джульетта]Гамлет: Ты так же сладок, как сумма сумм Ромео, его коня и его Черный кот! Выскажи свое мнение![Джульетта уходит] Сцена III: Восхваление Офелии.[Входит Офелия]Гамлет: Ты прекрасна, как разница между Ромео и квадратом. огромного зеленого мирного дерева. Выскажи свое мнение! Ты так же прекрасен, как продукт большого сельского города и моего удивительного Бездонный вышитый кошелек. Выскажи свое мнение! Ты так же любящ, как порождение самого синего, самого чистого, самого сладкого неба. и сумма белки и белой лошади. Ты так же прекрасна, как разница между Джульеттой и тобой. Выскажи свое мнение![Офелия и Гамлет уходят] Акт II: За спиной Гамлета. Сцена I: Разговор Ромео и Джульетты.[Входят Ромео и Джульетта]Ромео: Выскажи свое мнение. Ты так же обеспокоен, как сумма тебя самого и разница между моим маленьким гладким хомячком и моим носом. Говорите разум!Джульетта: Выскажи СВОЁ мнение! Ты такой же плохой, как Гамлет! Ты такой же маленький, как разница между квадратом разницы между моим маленьким пони и твой большой мохнатый пес и куб твоего жалкого маленького гульфик. Выскажи свое мнение![Выход Ромео] Сцена II: Разговор Джульетты и Офелии.[Входит Офелия]Джульетта: Ты так же хорош, как частное между Ромео и суммой малого пушистый зверь и пиявка. Выскажи свое мнение!Офелия: Ты так же отвратительна, как частное от деления Ромео на дважды разница между омелой и сочащимся инфицированным волдырем! Говорите ваш разум![Уходит]

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

Ссылки

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

  1. ^ abcdefghij "Язык программирования Шекспира". Архивировано из оригинала 21.07.2022.

Общие ссылки

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