LOLCODE

LOLCODE
LOLCode logo.png
Paradigm esoterisk
Designad av Adam Lindsay
Dök först upp 2007
Filnamnstillägg .lol, .lol
Hemsida lolcode .org
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.

externa länkar