ЛОЛКОД - LOLCODE

ЛОЛКОД
LOLCode logo.png
Парадигма эзотерический
Разработано Адам Линдси
Впервые появился 2007 г.
Расширения имени файла .lol, .lols
Интернет сайт lolcode .org
Под влиянием
Lolcats

LOLCODE - это эзотерический язык программирования, вдохновленный lolspeak , языком, выраженным в примерах интернет-мема lolcat . Язык был создан в 2007 году Адамом Линдси, исследователем вычислительного факультета Ланкастерского университета .

Язык четко не определен с точки зрения приоритетов операторов и правильного синтаксиса, но существует несколько функционирующих интерпретаторов и компиляторов. Одна интерпретация языка оказалась полной по Тьюрингу .

Структура языка и примеры

LOLCODE в ключевых слова взяты из сильно сжатого (сокращенного) говор из Lolcat интернета мемы. Здесь следует "Hello, World!" программа и простая программа для вывода файла на монитор. Подобный код был напечатан в Houston Chronicle .

Пример 1

HAI 1.2
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Код Комментарий
HAI [VERSION] Во всех программах LOLCODE HAI («Привет!») Представляет программу и указывает версию (хотя на самом деле она еще не используется).
CAN HAS [LIBRARY]? Во многих языках программирования одним из первых операторов будет включение библиотеки для общих функций, таких как ввод и вывод. Обычно это включается вызовом, например #include <stdio.h>( stdio, обозначающим стандартную библиотеку ввода / вывода). Эта команда является насмешливым искажением того, что спрашивает, доступна ли библиотека, получает ее, если возможно, и вызывает исключение, если нет. Он предназначен в первую очередь для правдоподобия - фактически, в текущих реализациях LOLCODE он игнорируется.
VISIBLE [MESSAGE] Печатает сообщение на экране.
KTHXBYE Так же, как HAIвводит программу KTHXBYE(которая состоит из «K», «THX» и «Bye», соединенных вместе, что означает «ОК, спасибо, пока»), она завершается.
BTW [MESSAGE] Чтобы написать однострочный комментарий в LOLCODE, вы используете BTWключевое слово. Комментарии игнорируются компилятором и написаны для лучшего понимания программы.
OBTW [MESSAGE]TLDR Подобно BTWключевому слову, OBTWключевое слово отмечает многострочный комментарий, комментарий, который занимает несколько строк. В LOLCODE OBTWключевое слово обозначает начало многострочного комментария, а TLDRключевое слово заканчивает его.

Пример 2

HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
    AWSUM THX
        VISIBLE FILE
    O NOES
        INVISIBLE "ERROR!"
KTHXBYE

В этом примере представлены команды для открытия файла ( PLZ OPEN FILE "NAME"?- «Попробуйте открыть файл?») И обработки ошибок ( AWSUM THX- «Отлично, спасибо!» И O NOES- «О нет!»).

Другие команды включают в себя объявление переменных, («переменная [есть / есть / есть] значение») для их назначения, отправка сообщений об ошибках в интерфейсную часть через вместо , и («между прочим») для обозначения комментария, создание синтаксический анализатор игнорирует остальную часть строки. I HAS A variablevariable R valueINVISIBLEVISIBLEBTW

Циклы создаются с помощью IM IN YR ''label''(навеяно мемом LOLcat "Im in ur noun , глагол ing yr родственное существительное " ) и заканчиваются на . Петли могут быть сломана с ключевым словом ( «достаточно»), или в более старых версиях . Циклы также можно завершить с помощью условной команды, как показано в следующем примере. IM OUTTA YR ''label''ENUFGTFOIZ

Пример 3

HAI 1.0
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE

Эта простая программа отображает числа 1–11 и завершает работу (согласно спецификации 1.0). Та же программа, что и в спецификации 1.2 (при условии, что VAR начинается с 0):

HAI 1.2
CAN HAS STDIO?
IM IN YR LOOP UPPIN YR VAR TIL BOTH SAEM VAR AN 10
    VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE

Пример 4

HAI 1.0
CAN HAS STDIO?
VISIBLE "U SEE THIS"

BTW VISIBLE "U SEE NOTHING"

OBTW
VISIBLE "U SEE NOTHIN"
VISIBLE "U STIL SEE NOTHIN"
TLDR

VISIBLE "U SEE THIS"
KTHXBYE

Приведенный выше пример вернет следующее:

U SEE THIS
U SEE THIS

Это связано с тем, что строка 3 выводится, U SEE THISа строка 5 игнорируется из-за того, что она закомментирована BTWключевым словом. Строки 8 и 9 не выполняются, потому что они находятся в многострочном комментарии, который начинается в строке 7 и заканчивается на строке 10. Строка 12 выводит, U SEE THISа строка 13 завершает программу.

Реализации

Самым последним и самым современным интерпретатором языка LOLCODE является lci , написанный на C Джастином Мезой. Он эффективно интерпретирует LOLCODE на различных платформах.

Первой реализацией LOLCODE был синтаксический анализатор PHP, написанный Джеффом Джонсом. Веб-сайт парсера также был первым веб-сайтом, использующим LOLCODE в качестве реального языка веб-сценариев. Будучи открытым исходным кодом с лицензией в стиле BSD, он был разветвлен и использовался несколькими веб-сайтами для реализации сценариев LOLCODE. Победившая презентация Pecha Kucha на PHP Works 2008 была посвящена этому парсеру.

Существует компилятор .NET для LOLCODE, написанный Ником Джонсоном и представленный на обучающих семинарах разработчиков Microsoft на конференции TechEd 2007 (Австралия).

PL / LOLCODE, проект, возглавляемый Джошем Толли, делает LOLCODE доступным как язык программирования на стороне сервера внутри PostgreSQL.

В Microsoft Dynamic Language Runtime есть реализация LOLCODE для тестирования.

lolcode-java (грамматика / интерпретатор Java для языка программирования LOLCODE) также доступен, но, похоже, он еще не соответствует спецификации версии 1.3.

Также доступен переводчик LOLCODE в JavaScript .

В виртуальную машину Parrot входит также компилятор LOLCODE в качестве одного из языков, демонстрирующих использование инструментов компилятора Parrot.

Компилятор, виртуальная машина и отладчик, созданные Пайпером, для языка типа LoLCode, LoLCode 1337, написанного на C, находятся здесь.

Версию для параллельных и распределенных вычислений можно найти здесь .

Связанные проекты

LOLCODE также вдохновил LOLPython, написанный Эндрю Далке. LOLPython использует синтаксис, вдохновленный LOL, аналогичный синтаксису LOLCODE, но в стиле Python. Он работает путем перевода исходного кода LOLPython в код Python.

ArnoldC - это ответвление LOLCODE, которое заменяет lolspeak цитатами из разных фильмов Арнольда Шварценеггера .

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

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