[Из песочницы] Реализация алгоритма Евклида на Shakespeare

Как известно, сейчас существует довольно много эзотерических языков программирования, среди которых имеется небезызвестный Brainfuck.
В этой статье речь пойдёт о языке Shakespeare, который разработали Джон Аслауд и Карл Хассельстром. Целью создания этого языка является маскировка кода программы под пьесы Уильяма Шекспира. Поскольку программа Hello, world! уже разобрана в документации и имеет довольно объёмный вид, то мы попытаемся написать на нём довольно простой алгоритм Евклида для нахождения наибольшего общего делителя двух целых чисел.

Общая часть


Все слова данного языка делятся на три типа: ключевые слова, которые отвечают за выполнение каких-либо действий, переменные и комментарии.
При этом, всё, что не относится к первым двум группам, в этом языке программирования считается комментарием.

Возникает естественный вопрос, как отличить между собой эти слова. Но прежде разберём структуру программы.

Заглавие программы, которое выполняет роль подобно ключевому слову program в Паскале, и не несёт никакой смысловой нагрузки. Далее идёт перечень лиц, которые участвуют в программе. Всё, что мы здесь объявим, и будет далее нашими переменными. Единственным ограничением на имя переменной является то, что это обязательно должно быть имя персонажа из пьесы Шекспира.
Как и любая пьеса, эта программа делится на акты и сцены, которые занумерованы римскими цифрами. Акты и сцены играют роль меток для переходов, как условных, так и безусловных.

В этом языке роль кирпича играют существительные и прилагательные. При этом существительное имеет значение 1 или -1 в зависимости от того, имеет ли это существительное положительный или отрицательный смысл. В трансляторе этого языка содержатся словари, чтобы правильно определять смысл существительного. Каждое прилагательное, добавленное спереди к существительному, увеличивает его в 2 раза. С помощью этих знаний мы уже можем получить числа, которые являются степенью двойки, и противоположные им.
Для того, чтобы получить другие числа, используютя ключевые слова sum и difference. Кроме того, чтобы узнать значение переменной, которую мы хотим получить, мы можем использовать ключевое слово thyself. Например, число 6 можно получить, например, следующим способом:

You are brave charming hero. You are as good as the sum of cute pony and thyself
В этом способе число 6 представляется как 4 + 2. Слова hero и pony принимают значения 1, поскольку им придаётся положителньый смысл. Соответственно, brave charming hero представляется как 1 * 2 * 2 = 4. Второе предложение разбивается на сумму числа 2, чему соответствует cute pony, и значения переменной, на которое указывает ключевое слово thyself.
В переводе на любой язык программирования указанный фрагмент кода будет выглядеть примерно так:
X = 4;
X = 2 + X;


Для ввода и вывода в этом языке используются следующие фразы:

Читать дальше →

© Habrahabr.ru