Változók
Láthatóság
A jelenlegi (1.2-es) verzióban minden változó a tartalmazó függvényre, vagy a main blokkra nézve lokális. A változók csak deklarálás után érhetőek el (ellentétben pl. a javascript-el, ahol függvény láthatóság van, vagyis ha a függvény végén deklarálunk egy változót, azt az elején is használhatjuk), és nincs globális láthatóság.
Elnevezés
Azonosítók betűvel kezdődnek, amit betű számjegy vagy alulvonás követhet. Kis és nagybetűk egyaránt használhatóak és a nyelv case-sensitive, vagyis a ’CAT’,’Cat’ és ’cat’ azonosítók különböző változókat jelölnek.
Deklaráció és értékadás
Egy változó deklarálása és értékadása egy utasításon belül I HAZ A változónév ITZ érték alakban történik az 1.2-es verzióban. A típuskonverziók automatikusan történnek. A nyelv dinamikusan tipizált. Amíg egy változó értéket nem kap típus nélküliként (NOOB) szerepel. A NOOB típusú változót csak TROOF (boolean) típusúvá castolható automatikusan, és hamisra értékelődik ki (FAIL). Minden más típus művelete (pl. Aritmetikai műveletek NOOB-on) hibát adnak. Az explicit típuskényszerítés minden más esetben üres illetve nulla értéket ad.
Példa:
Állítások
LOLCODE nyelvben helyesek azok a függvényhívások és kifejezések, amiknek eredményét nem tároljuk. Ezeknek a visszatérési értéke egy ideiglenes változóban tárolja a program, aminek neve IT. Ennek a változónak az értéke megmarad az adott blokk végrehajtásáig, vagy amíg egy újabb kifejezés kiértékelése felülírja.
A konzolra történő kiírásra a VISIBLE kulcsszó szolgál. Kötetlen paraméterszámú, minden paraméterét implicit módon YARN típusúvá konvertálja és konkatenálja. Az utasítás végét vesszővel, vagy sorvégével jelöljük. A kimenet végére egy kocsivissza karaktert ( :) ekvivalens a \n-el) tesz, kivéve, ha az utolsó paraméter után teszünk egy felkiáltójelet. Az 1.2 verzióban nincs mód fájlba írásra.
Példa:
Adatok bekérésére a konzolról a GIMMEH kulcsszóval történik.
Példa:
Szintaxis:
Az aritmetikai operátorok és függvények általánossan prefix jelölést alkalmaznak (
A matematikai operátorok a következőek:
A matematikai operátorok argumentumai lehetnek kifejezések is, így ezen operátorok egymásba ágyazhatóak. Ha mindkét operandus NUMBR típusú akkor egész számokkal dolgozunk, ha valamelyik operandus NUMBAR típusú, a másik szükség esetén NUMBAR típusúra konvertálódik, és lebegőpontos számokkal dolgozunk. Ha az operandusok között szerepel YARN típusú, akkor attól függően, hogy tartalmaz-e tizedes pontot, egész vagy lebegőpontos számként értelmeződik. Amennyiben valamelyik operandus nem konvertálható számmá hibát kapunk.
A logikai operátorok:
Összehasonlító operátorok
Numerikus összehasonlítás
Az összehasonlítás két NUMBR típusú változó esetén egész számokat hasonlít össze, ha valamelyik paraméter NUMBAR típusú, akkor a másik paraméter szükség esetén NUMBAR típusúra konvertálódik. Más típusok összehasonlítására nincs automatikus konverzió összehasonlítás előtt, így az 53 és ”53” kifejezések összehasonlítása FAIL eredményt fog adni. Az egyenlő és nem egyenlő összehasonlításon kívül nincs összehasonlító művelet így a nagyobb egyenlő és hasonló összehasonlításokat az egyenlőség és nagyobb műveletek vagy-olásával érhetjük el.
Típus kényszerítés
Azok az operátorok, amik adott típusokon működnek automatikus konverziót hajtanak végre az operandusaikon. Ha ez sikertelen, akkor hibát kapunk.
Egy kifejezés típusát explicit módon konvertálhatjuk a MAEK bináris operátorral: MAEK
Konkatenáció
Több YARN típusú váltózó összefűzhető a SMOOSH
Egy elágazáshoz négy kulcsszó szükséges: O RLY?,YA RLY,NO WAI és azOIC. Az O RLY? felel meg az if-nek, YA RLY az igaz ág, NO WAI a hamis ág. A YA RLY implicit módon le van zárva ha nem érjük el a NO WAI ágat, a NO WAI ágat az OIC zárja.
Példa:
Else-if
Az else-if konstrukció megvalósítható a YA RLY és NO WAI blokkok között elhelyezett MEBBE (a maybe kifejezés torzított változata) blokkokkal. Más nyelvekben megszokott módon, ha a MEBBE kulcsszó után szereplő kifejezés igaz, a blokk végrehajtódik, egyébként a következő blokkot hajtjuk végre. Példa:
Esetszétválasztás
Az esetszétválasztás kulcsszava a WTF?, egy összehasonlító blokk az OMG kulcsszóval kezdődik. Egy összehasonlító blokkban az OMG kulcsszót egy literál követi. Minden literálnak egyedinek kell lennie, és nem szerepelhet benne változó érték (a :{változó} alakban, bővebben a literáloknál.) Ha egy összehasonlító blokkban nem adunk meg break (GTFO) utasítást, a vezérlés ”továbbcsordul”, a következő blokkra ugrik. A GTFO felel meg a hagyományos break-nek, terminálja a blokkot és a WTF végére ugrik. Az opcionális OMGWTF kulcsszó után lévő utasítások akkor hajtódnak végre, ha egyik ágban sincs egyezés. Az OIC zárja az egészet.
Példa:
A ciklus az IM IN YR cimke kulcsszóval kezdődik és az IM OUTTA YR cimke kulcsszóval végződik. Az így definiált ciklus végtelen ciklus, amit eyplicit egy GTFO kulcsszóval kell terminálni. Jelenlegi verzióban az IM IN YR kifejezést követő cimke szükséges, de nincs felhasználva azon kívül, hogy jelölje a ciklus elejét és végét.
A nem végtelen ciklusok általános alakja a következő:
IM IN YR cimke operator YR valtozo [TIL|WILE kifejezés]
code block
IM OUTTA YR
A TIL használata esetén addig fut a ciklus amíg a kifejezés FAIL-re értékelődik ki, WILE esetén addig, amíg WIN-re.
Példa: