LOLCODE
Paradigm | esoterisk |
---|---|
Designad av | Adam Lindsay |
Dök först upp | 2007 |
Filnamnstillägg | .lol, .lol |
Hemsida | |
Influerad av | |
Lolcats |
LOLCODE är ett esoteriskt programmeringsspråk inspirerat av lolspeak , språket uttryckt i exempel på lolcat Internet-meme . Språket skapades 2007 av Adam Lindsay, en forskare vid Computing Department vid Lancaster University .
Språket är inte klart definierat vad gäller operatörsprioriteringar och korrekt syntax, men det finns flera fungerande tolkar och kompilatorer. En tolkning av språket har visat sig vara Turing-komplett .
Språkstruktur och exempel
LOLCODEs nyckelord är hämtade från den kraftigt komprimerade (förkortade) patoisen av lolcat Internet-memet. Här följer ett "Hej världen!" program och ett enkelt program för att mata ut en fil till en bildskärm. Liknande kod trycktes i Houston Chronicle .
- :) representerar en nyrad (\n)
- :> representerar en flik (\t)
- :o representerar ett klocktecken (\a)
- :" representerar ett dubbla citattecken (")
- :: representerar ett enda bokstavligt kolon (:)
- :(<hex>) konverterar en enda hexidecimal Unicode-kodpunkt till lokal miljökodning (till exempel UTF-8 )
- :{ } interpolerar värdet på den bifogade variabeln, cast som en sträng
- :[ ] konverterar det normativa namnet på ett enstaka Unicode-tecken till lokal miljökodning
Exempel 1
HAI 1.2 CAN HAS STDIO? SYNLIG "HAI WORLD!" KTHXBYE
Koda | Kommentar |
---|---|
HAI [VERSION]
|
I alla LOLCODE-program introducerar HAI ("Hej!") programmet och specificerar versionen (även om detta faktiskt inte används ännu). |
KAN HAR [LIBRARY]?
|
I många programmeringsspråk kommer ett av de första påståendena att vara en biblioteksinkludering för vanliga funktioner som indata och utdata. Vanligtvis inkluderas detta av ett anrop som #include <stdio.h> ( stdio står för standard input/output bibliotek). Det här kommandot är en korruption av det där, frågar om ett bibliotek är tillgängligt, skaffar det om möjligt och gör ett undantag om inte. Det finns främst för sanningsskillnad – i själva verket ignoreras det i nuvarande implementeringar av LOLCODE. |
SYNLIG [MEDDELANDE]
|
Skriver ut ett meddelande till skärmen. |
KTHXBYE
|
Precis när HAI introducerar programmet avslutar KTHXBYE (som är "K", "THX" och "Bye" alla sammansatta, vilket betyder "OK, tack, hejdå") det. |
BTW [MEDDELANDE]
|
För att skriva en enradskommentar i LOLCODE använder du nyckelordet BTW . Kommentarer ignoreras av kompilatorn och är skrivna för bättre förståelse av programmet. |
OBTW [MEDDELANDE] TLDR
|
På samma sätt som nyckelordet BTW markerar nyckelordet OBTW en kommentar med flera rader, en kommentar som sträcker sig över flera rader. I LOLCODE betyder nyckelordet OBTW början på en kommentar med flera rader medan nyckelordet TLDR avslutar den. |
Exempel 2
HAI 1.2 CAN HAS STDIO? PLZ ÖPPNA FIL "LOLCATS.TXT"? AWSUM THX VISIBLE FIL O NOES OVISIBLE "FEL!" KTHXBYE
I det här exemplet, kommandon för att öppna en fil ( PLZ OPEN FILE "NAME"?
—"Var vänlig öppna den här filen?"), och felhantering ( AWSUM THX
—"Awesome, thanks!", och O NOES
—"Åh nej!" ) introduceras.
Andra kommandon inkluderar I HAS A variabel
för att deklarera variabler, variabel R- värde
("variabel [är/är/består] värde") för att tilldela dem, skicka felmeddelanden till användargränssnittet via INVISIBLE
istället för VISIBLE
och BTW
("av way") för att beteckna en kommentar, vilket gör att parsern ignorerar resten av raden.
Slingor skapas med IM IN YR ''etikett''
(inspirerad av "Im in ur substantiv , verb ing yr -relaterat substantiv " LOLcat meme ), och slutade med IM OUTTA YR ''label''
. Slingor kan brytas med nyckelordet ENUF
("tillräckligt") eller i äldre versioner, GTFO
. Slingor kan också avslutas med det villkorliga IZ-
kommandot, som visas i nästa exempel.
Exempel 3
HAI 1.0 CAN HAR STDIO? JAG HAR EN VAR IM I YR LOOP UP VAR!!1 SYNLIG VAR IZ VAR STÖRRE ÄN 10? KTHX IM OUTTA YR LOOP KTHXBYE
Detta enkla program visar siffrorna 1–11 och avslutas (som i specifikation 1.0). Samma program som i specifikation 1.2 är (förutsatt att VAR börjar vid 0):
HAI 1.2 CAN HAS STDIO? IM IN YR LOOP UPPIN YR VAR TIL BÅDA SAEM VAR EN 10 SYNLIG SUMMA AV VAR AN 1 IM OUTTA YR LOOP KTHXBYE
Exempel 4
HAI 1.0 CAN HAR STDIO? SYNLIG "DU SER DETTA" BTW SYNLIG "DU SER INGENTING" OBTW SYNLIG "DU SER INGENTING" SYNLIG "DU SER STILLA INGET" TLDR SYNLIG "DU SER DETTA" KTHXBYE
Exemplet ovan kommer att returnera följande:
DU SER DETTA DU SER DETTA
Detta beror på att rad 3 matar ut U SE DETTA
men rad 5 ignoreras på grund av att den kommenteras ut av nyckelordet BTW .
Raderna 8 och 9 körs inte eftersom de finns i en flerradskommentar som börjar på rad 7 och slutar på rad 10. Rad 12 utmatar SE DETTA och
rad 13 avslutar programmet.
Genomföranden
Den senaste och uppdaterade tolken för LOLCODE-språket är lci, skriven i C av Justin Meza. Den tolkar LOLCODE effektivt på en mängd olika plattformar.
Den första LOLCODE-implementeringen var en PHP- tolkare skriven av Jeff Jones. Parserns webbplats var också den första webbplatsen som använde LOLCODE som ett faktiskt webbskriptspråk. Eftersom den är öppen källkod med en BSD-licens, har den splittrats och använts av flera webbplatser för att implementera LOLCODE-skript. Den vinnande Pecha Kucha -presentationen på PHP Works 2008 handlade om denna parser.
Det finns en .NET- kompilator för LOLCODE skriven av Nick Johnson, och presenteras i Microsofts utbildningsseminarier för utvecklare, TechEd 2007 Conference (Australien).
PL/LOLCODE, ett projekt som leds av Josh Tolley, gör LOLCODE tillgängligt som ett programmeringsspråk på serversidan i PostgreSQL.
Microsoft Dynamic Language Runtime har en implementering av LOLCODE för teständamål.
lolcode-java (En Java-grammatik/tolk för programmeringsspråket LOLCODE) är ett projekt som också finns tillgängligt men det verkar ännu inte vara kompatibelt med version 1.3-specifikationen.
En LOLCODE till JavaScript- översättare är också tillgänglig.
Det finns också en LOLCODE-kompilator som ingår i den virtuella Parrot-maskinen som ett av språken som demonstrerar användningen av Parrots kompilatorverktyg.
En kompilator, virtuell maskin och debugger, skapad av Piper, för ett LoLCode-liknande språk, LoLCode 1337, skrivet i C.
En version för parallell och distribuerad beräkning kan hittas.
Relaterade Projekt
LOLCODE har också inspirerat LOLPython, skriven av Andrew Dalke. LOLPython använder LOL-inspirerad syntax som liknar den för LOLCODE, men med en Python-liknande stil. Den fungerar genom att översätta LOLPython-källan till Python-kod.
ArnoldC är en utlöpare av LOLCODE som ersätter lolspeak med citat från olika Arnold Schwarzenegger -filmer.