summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorabactel <abactel@protonmail.com>2017-05-18 11:39:09 +0100
committerven <vendethiel@hotmail.fr>2017-05-18 12:39:09 +0200
commita5833175beb6fea9a2950a2a234e51e06ace3ed9 (patch)
treec05272213b33d7b370762b57f91dcfe5f440a3f7
parentb2cb3528857b673a8c9921bae8f5f6c9cb6efd69 (diff)
[LOLCODE/en] Create LOLCODE tutorial (#2721)
-rw-r--r--LOLCODE.html.markdown185
1 files changed, 185 insertions, 0 deletions
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 <language version>` 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)