From a5833175beb6fea9a2950a2a234e51e06ace3ed9 Mon Sep 17 00:00:00 2001 From: abactel Date: Thu, 18 May 2017 11:39:09 +0100 Subject: [PATCH] [LOLCODE/en] Create LOLCODE tutorial (#2721) --- LOLCODE.html.markdown | 185 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 LOLCODE.html.markdown diff --git a/LOLCODE.html.markdown b/LOLCODE.html.markdown new file mode 100644 index 00000000..d7ed10c9 --- /dev/null +++ b/LOLCODE.html.markdown @@ -0,0 +1,185 @@ +--- +language: LOLCODE +filename: learnLOLCODE.lol +contributors: + - ["abactel", "https://github.com/abactel"] +--- + +LOLCODE is an esoteric programming language designed to resemble the speech of [lolcats](https://upload.wikimedia.org/wikipedia/commons/a/ab/Lolcat_in_folder.jpg?1493656347257). + +```LOLCODE +BTW This is an inline comment +BTW All code must begin with `HAI ` and end with `KTHXBYE` + +HAI 1.3 +CAN HAS STDIO? BTW Importing standard headers + +OBTW + ========================================================================== + ================================= BASICS ================================= + ========================================================================== +TLDR + +BTW Displaying text: +VISIBLE "HELLO WORLD" + +BTW Declaring variables: +I HAS A MESSAGE ITZ "CATZ ARE GOOD" +VISIBLE MESSAGE + +OBTW + (This is a codeblock.) Variables are dynamically typed so you don't need to + declare their type. A variable's type matches its content. These are the + types: +TLDR + +I HAS A STRING ITZ "DOGZ ARE GOOOD" BTW type is YARN +I HAS A INTEGER ITZ 42 BTW type is NUMBR +I HAS A FLOAT ITZ 3.1415 BTW type is NUMBAR +I HAS A BOOLEAN ITZ WIN BTW type is TROOF +I HAS A UNTYPED BTW type is NOOB + +BTW Accepting user input: +I HAS A AGE +GIMMEH AGE +BTW The variable is stored as a YARN. To convert it into NUMBR: +AGE IS NOW A NUMBR + +OBTW + ========================================================================== + ================================== MATH ================================== + ========================================================================== +TLDR + +BTW LOLCODE uses polish notation style math. + +BTW Basic mathematical notation: + +SUM OF 21 AN 33 BTW 21 + 33 +DIFF OF 90 AN 10 BTW 90 - 10 +PRODUKT OF 12 AN 13 BTW 12 * 13 +QUOSHUNT OF 32 AN 43 BTW 32 / 43 +MOD OF 43 AN 64 BTW 43 modulo 64 +BIGGR OF 23 AN 53 BTW max(23, 53) +SMALLR OF 53 AN 45 BTW min(53, 45) + +BTW Binary notation: + +BOTH OF WIN AN WIN BTW and: WIN if x=WIN, y=WIN +EITHER OF FAIL AN WIN BTW or: FAIL if x=FAIL, y=FAIL +WON OF WIN AN FAIL BTW xor: FAIL if x=y +NOT FAIL BTW unary negation: WIN if x=FAIL +ALL OF WIN AN WIN MKAY BTW infinite arity AND +ANY OF WIN AN FAIL MKAY BTW infinite arity OR + +BTW Comparison: + +BOTH SAEM "CAT" AN "DOG" BTW WIN if x == y +DIFFRINT 732 AN 184 BTW WIN if x != y +BOTH SAEM 12 AN BIGGR OF 12 AN 4 BTW x >= y +BOTH SAEM 43 AN SMALLR OF 43 AN 56 BTW x <= y +DIFFRINT 64 AN SMALLR OF 64 AN 2 BTW x > y +DIFFRINT 75 AN BIGGR OF 75 AN 643 BTW x < y + +OBTW + ========================================================================== + ============================== FLOW CONTROL ============================== + ========================================================================== +TLDR + +BTW If/then statement: +I HAS A ANIMAL +GIMMEH ANIMAL +BOTH SAEM ANIMAL AN "CAT", O RLY? + YA RLY + VISIBLE "YOU HAV A CAT" + MEBBE BOTH SAEM ANIMAL AN "MAUS" + VISIBLE "NOM NOM NOM. I EATED IT." + NO WAI + VISIBLE "AHHH IS A WOOF WOOF" +OIC + +BTW Case statement: +I HAS A COLOR +GIMMEH COLOR +COLOR, WTF? + OMG "R" + VISIBLE "RED FISH" + GTFO + OMG "Y" + VISIBLE "YELLOW FISH" + BTW Since there is no `GTFO` the next statements will also be tested + OMG "G" + OMG "B" + VISIBLE "FISH HAS A FLAVOR" + GTFO + OMGWTF + VISIBLE "FISH IS TRANSPARENT OHNO WAT" +OIC + +BTW For loop: +I HAS A TEMPERATURE +GIMMEH TEMPERATURE +TEMPERATURE IS NOW A NUMBR +IM IN YR LOOP UPPIN YR ITERATOR TIL BOTH SAEM ITERATOR AN TEMPERATURE + VISIBLE ITERATOR +IM OUTTA YR LOOP + +BTW While loop: +IM IN YR LOOP NERFIN YR ITERATOR WILE DIFFRINT ITERATOR AN -10 + VISIBLE ITERATOR +IM OUTTA YR LOOP + +OBTW + ========================================================================= + ================================ Strings ================================ + ========================================================================= +TLDR + +BTW Linebreaks: +VISIBLE "FIRST LINE :) SECOND LINE" + +BTW Tabs: +VISIBLE ":>SPACES ARE SUPERIOR" + +BTW Bell (goes beep): +VISIBLE "NXT CUSTOMER PLS :o" + +BTW Literal double quote: +VISIBLE "HE SAID :"I LIKE CAKE:"" + +BTW Literal colon: +VISIBLE "WHERE I LIVE:: CYBERSPACE" + +OBTW + ========================================================================= + =============================== FUNCTIONS =============================== + ========================================================================= +TLDR + +BTW Declaring a new function: +HOW IZ I SELECTMOVE YR MOVE BTW `MOVE` is an argument + BOTH SAEM MOVE AN "ROCK", O RLY? + YA RLY + VISIBLE "YOU HAV A ROCK" + NO WAI + VISIBLE "OH NO IS A SNIP-SNIP" + OIC + GTFO BTW This returns NOOB +IF U SAY SO + +BTW Declaring a function and returning a value: +HOW IZ I IZYELLOW + FOUND YR "YELLOW" +IF U SAY SO + +BTW Calling a function: +I IZ IZYELLOW MKAY + +KTHXBYE +``` + +## Further reading: + +- [LCI compiler](https://github.com/justinmeza/lci) +- [Official spec](https://github.com/justinmeza/lolcode-spec/blob/master/v1.2/lolcode-spec-v1.2.md)