LOLCODE
LOLCODE is an esoteric programming language inspired by lolspeak, the language expressed in examples of the lolcat Internet meme. The language was created in 2007 by Adam Lindsay, researcher at the Computing Department of Lancaster University.
The language is not clearly defined in terms of operator priorities and correct syntax, but several functioning interpreters and compilers exist. One interpretation of the language has been proven Turing-complete.
Language structure and examples
LOLCODE's keywords are drawn from the heavily compressed patois of the lolcat Internet meme. Here follow a "Hello, World!" program and a simple program to output a file to a monitor. Similar code was printed in the Houston Chronicle.Example 1
HAI 1.2
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Example 2
HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
In this example, commands to open a file, and error handling are introduced.
Other commands include
I HAS A variable
for declaring variables, variable R value
for assigning them, sending error messages to the front end via INVISIBLE
instead of VISIBLE
, and BTW
to denote a comment, making the parser ignore the rest of the line. Loops are created with IM IN YR label, and ended with IM OUTTA YR label. Loops can be broken with the keyword
ENUF
, or in older versions,
. Loops can also be ended with the conditional IZ
command, as demonstrated in the next example.Example 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
This simple program displays the numbers 1–11 and terminates. The same program as of specification 1.2 is :
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
Example 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
The above example will return the following:
U SEE THIS
U SEE THIS
This is because line 3 outputs
U SEE THIS
but line 5 is ignored due to the fact that it is commented out by the BTW
keyword. Lines 8 and 9 aren't run because they are in a multiline comment that starts in line 7, and ends on line 10. Line 12 outputs U SEE THIS
and line 13 terminates the program.Implementations
The most recent and up-to-date interpreter for the LOLCODE language is , written in C by Justin Meza. It interprets LOLCODE efficiently on a variety of platforms.The first LOLCODE implementation was a PHP parser written by Jeff Jones. The parser's website was also the first website using LOLCODE as an actual web scripting language. Being open source with a BSD style licence, it has been forked and used by multiple websites to implement LOLCODE scripting. The winning Pecha Kucha presentation at PHP Works 2008 was about this parser.
There is a.NET compiler for LOLCODE written by Nick Johnson, and featured in Microsoft developer training seminars, TechEd 2007 Conference.
PL/LOLCODE, a project headed by Josh Tolley, makes LOLCODE available as a server-side programming language inside PostgreSQL.
Microsoft Dynamic Language Runtime has an implementation of LOLCODE for testing purposes.
lolcode-java is a project also available but it appears to not yet be compliant with the version 1.3 specification.
A LOLCODE to JavaScript translator is also available.
There is also a LOLCODE compiler included with the Parrot virtual machine as one of the languages demonstrating the use of Parrot's compiler tools.
A compiler, virtual machine and debugger, created by Piper, for a LoLCode like language, LoLCode 1337, written in C, is
A version for parallel and distributed computing can be found .
Related projects
LOLCODE has also inspired LOLPython, written by Andrew Dalke. LOLPython uses LOL-inspired syntax similar to that of LOLCODE, but with a Python-like style. It operates by translating the LOLPython source into Python code.ArnoldC is an offshoot of LOLCODE that replaces lolspeak with quotes from different Arnold Schwarzenegger movies.