ЛОЛКОД - LOLCODE
Парадигма | эзотерический |
---|---|
Разработано | Адам Линдси |
Впервые появился | 2007 г. |
Расширения имени файла | .lol, .lols |
Интернет сайт | lolcode |
Под влиянием | |
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
ключевое слово отмечает многострочный комментарий, комментарий, который занимает несколько строк. В LOLCODEOBTW
ключевое слово обозначает начало многострочного комментария, а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 variable
variable R value
INVISIBLE
VISIBLE
BTW
Циклы создаются с помощью IM IN YR ''label''
(навеяно мемом LOLcat "Im in ur noun , глагол ing yr родственное существительное " ) и заканчиваются на . Петли могут быть сломана с ключевым словом ( «достаточно»), или в более старых версиях . Циклы также можно завершить с помощью условной команды, как показано в следующем примере.
IM OUTTA YR ''label''
ENUF
GTFO
IZ
Пример 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 цитатами из разных фильмов Арнольда Шварценеггера .