loljs

Implementation of programming language LOLCODE

loljs is a LOLCODE interpreter created by Mark Watkinson. It is written in JavaScript and is available online. It features syntax highlight, a brief language summary and a set of examples, including Brainfuck interpreter (used to prove Turing-completeness of the language). Unfortunately, the interpreter provides no error messages, so using it for actual coding is a bit tricky.

Syntax highlight in loljs

Examples:

Hello, World!:

Example for versions loljs 1.1
``````HAI
CAN HAS STDIO?
VISIBLE "Hello, World!"
KTHXBYE
``````

Factorial:

Example for versions loljs 1.1

This example uses iterative factorial definition.

``````HAI
I HAS A N ITZ 0
I HAS A FACTORIAL ITZ 1
IM IN YR LOOP UPPIN YR N WILE N SMALLR THAN 17
VISIBLE SMOOSH N "! = " FACTORIAL
FACTORIAL R PRODUKT OF FACTORIAL AN SUM OF N AN 1
IM OUTTA YR LOOP
KTHXBYE
``````

Factorial:

Example for versions loljs 1.1

This example uses recursive factorial calculation.

``````HAI
HOW DUZ I FACTORIAL N
BOTH SAEM 0 AN N
O RLY?
YA RLY
FOUND YR 1
NO WAI
FOUND YR PRODUKT OF N AN FACTORIAL DIFF OF N AN 1
OIC
IF U SAY SO

I HAS A N ITZ 0
IM IN YR LOOP UPPIN YR N WILE N SMALLR THAN 17
VISIBLE SMOOSH N "! = " FACTORIAL N
IM OUTTA YR LOOP
KTHXBYE
``````

Fibonacci numbers:

Example for versions loljs 1.1
``````HAI
I HAS A I ITS 0
I HAS A FIB1 ITS 0
I HAS A FIB2 ITS 1
IM IN YR LOOP UPPIN YR I TIL BOTH SAEM I AN 16
VISIBLE SMOOSH FIB2 ", "!
I HAS A FIB3 ITS SUM OF FIB1 AN FIB2
FIB1 R FIB2
FIB2 R FIB3
IM OUTTA YR LOOP
VISIBLE "..."
KTHXBYE
``````

Fibonacci numbers:

Example for versions loljs 1.1
``````HAI
HOW DUZ I FIBONACCI N
BOTH SAEM 1 AN BIGGR OF N AN 1, O RLY?
YA RLY
FOUND YR 1
NO WAI
FOUND YR SUM OF FIBONACCI DIFF OF N AN 1 AN FIBONACCI DIFF OF N AN 2
OIC
IF U SAY SO

I HAS A N ITZ 0
IM IN YR LOOP UPPIN YR N WILE N SMALLR THAN 16
VISIBLE SMOOSH FIBONACCI N ", "!
IM OUTTA YR LOOP
VISIBLE "..."
KTHXBYE
``````

Example for versions loljs 1.1
``````HAI
HOW DUZ I SQRT X
I HAS A X_N ITZ 10
I HAS A LIMIT ITZ 100
I HAS A COUNTER ITZ 0
IM IN YR LOOP UPPIN YR COUNTER WILE COUNTER SMALLR THAN LIMIT
I HAS A TERM ITZ QUOSHUNT OF X AN X_N
TERM R SUM OF X_N AN TERM
TERM R QUOSHUNT OF TERM AN 2
X_N R TERM
IM OUTTA YR LOOP
FOUND YR X_N
IF U SAY SO

I HAS A AC
GIMMEH AC
AC IS NOW A NUMBR
BOTH SAEM AC AN 0, O RLY?
YA RLY
NO WAI
I HAS A BC
GIMMEH BC
BC IS NOW A NUMBR
I HAS A CC
GIMMEH CC
CC IS NOW A NUMBR
I HAS A D ITZ DIFF OF PRODUKT OF BC AN BC  AN PRODUKT OF 4 AN PRODUKT OF AC AN CC
BOTH SAEM D AN 0, O RLY?
YA RLY
VISIBLE SMOOSH "x = " QUOSHUNT OF BC AN PRODUKT OF -2 AN AC
NO WAI
BOTH SAEM 0 AN SMALLR OF 0 AN D, O RLY?
YA RLY
VISIBLE SMOOSH "x1 = " QUOSHUNT OF SUM OF BC AN SQRT D AN PRODUKT OF -2 AN AC
VISIBLE SMOOSH "x2 = " QUOSHUNT OF DIFF OF BC AN SQRT D AN PRODUKT OF -2 AN AC
NO WAI
D R PRODUKT OF D AN -1
VISIBLE SMOOSH "x1 = (" QUOSHUNT OF BC AN PRODUKT OF -2 AN AC ", " QUOSHUNT OF SQRT D AN PRODUKT OF -2 AN AC ")"
VISIBLE SMOOSH "x2 = (" QUOSHUNT OF BC AN PRODUKT OF -2 AN AC ", " QUOSHUNT OF SQRT D AN PRODUKT OF 2 AN AC ")"
OIC
OIC
OIC
KTHXBYE
``````

CamelCase:

Example for versions loljs 1.1

Note that LOLCODE has no character processing functions, except for concatenation, so you can’t compare characters or get their ASCII-codes. This means that to figure out whether a character is a letter you need to create a “dictionary” of all letters and just look it up.

``````HAI
I HAS A UPP ITZ "QWERTYUIOPASDFGHJKLZXCVBNM"
I HAS A LOW ITZ "qwertyuiopasdfghjklzxcvbnm"

HOW DUZ I LOWER CHAR
I HAS A I ITZ 0
IM IN YR LOOP UPPIN YR I TIL BOTH SAEM I AN LEN OF UPP
BOTH SAEM UPP!I AN CHAR, O RLY?
YA RLY
FOUND YR LOW!I
OIC
IM OUTTA YR LOOP
FOUND YR CHAR
IF U SAY SO

HOW DUZ I UPPER CHAR
I HAS A I ITZ 0
IM IN YR LOOP UPPIN YR I TIL BOTH SAEM I AN LEN OF UPP
BOTH SAEM LOW!I AN CHAR, O RLY?
YA RLY
FOUND YR UPP!I
OIC
IM OUTTA YR LOOP
FOUND YR CHAR
IF U SAY SO

HOW DUZ I ISLOWER CHAR
I HAS A I ITZ 0
IM IN YR LOOP UPPIN YR I TIL BOTH SAEM I AN LEN OF UPP
BOTH SAEM LOW!I AN CHAR, O RLY?
YA RLY
FOUND YR WIN
OIC
IM OUTTA YR LOOP
FOUND YR FAIL
IF U SAY SO

I HAS A TEXT
GIMMEH TEXT
I HAS A CAMELCASE ITZ ""
I HAS A I ITZ 0
I HAS A SPACE ITZ WIN
IM IN YR LOOP UPPIN YR I TIL BOTH SAEM I AN LEN OF TEXT
I HAS A CHAR ITZ LOWER TEXT!I
ISLOWER CHAR, O RLY?
YA RLY
BTW this is a letter (already lowercase), modify depending on SPACE
SPACE, O RLY?
YA RLY
CHAR R UPPER CHAR
OIC
CAMELCASE R SMOOSH CAMELCASE CHAR
SPACE R FAIL
NO WAI
BTW this is space - mark it
SPACE R WIN
OIC
IM OUTTA YR LOOP
VISIBLE CAMELCASE
KTHXBYE
``````

Top 10 users: