EsoFur
Jump to navigation
Jump to search
EsoFur is a joke programming language created by User:TaserTheFox, partially inspired by FurASM
Commands
Parameters in [brackets] are required, and (parenthesis) are optional.
Command | What It Does |
---|---|
OwO What's This? | Start Of Program |
QwQ | End Of Program |
Notices Your [Str] | Declares a Variable |
And Leashes It | Sets the variable to be local |
[Var 1] Pounces On [Var 2] | Sets the value of [Var 2] to [Var 1] |
[Var] Gets Canceled | Clears [Var] |
*Starts Roleplaying* | Start of loop |
*Stops Roleplaying Because Of [Var]* | End of loop; Exits if [Var] is less than 0 |
[Cond] Nuzzles [Var] | If [Cond] doesn't returns 0, Jump to Marking [Var] if its a string, Jump [Var] lines down if its an int |
Marks [Str] | Leaves a Marking with label [Str] |
Howl [Var] | Prints [Var] |
Awoo [Var 1] (At [Var 2]) | Prints char if [Var] is an int; Sends the result to [Var 2] instead of printing |
Muzzles | Starts a comment line |
Maws | Start of multi-line comment |
Paws | End of multi-line comment |
[Var] Suits Up | Changes [Var] to a list |
[Var] Starts A Furpile | Changes [Var] to a Furpile |
Sew [Var] Onto [List] | Appends [Var] to [List] |
[Var] Joins The Pile At [Furpile] | Appends [Var] to [Furpile] |
Look! [*Var] Joined The [Var 2] | Concatenates [*Var] to [Var 2] |
Boop The User For [Var] | Waits for console input and sets it to [Var] |
[Var 1] Inflates By [Var 2] | Add [Var 2] to [Var 1] |
[Var 1] Pays [Var 2] | Subtract [Var 2] from [Var 1] |
[Var 1] Breeds By [Var 2] | Multiples [Var 1] by [Var 2] |
[Var 1] Baps [Var 2] | Divides [Var 2] by [Var 1] |
[Var 1] Deflates By [Var 2] | Modulus [Var 1] by [Var 2] |
[Var 1] Gets Vored By [Var 2] | Sets [Var 1] to log base [Var 2] of [Var 1] |
[Var 1] Hyper-Inflates By [Var 2] | Raises [Var 1] to the power of [Var 2] |
[Var] Transforms Into [Type] | Changes the type of [Var] to [Type] |
[List]'s Raffle Winner Is [Var] | Pops the last element in [List] and assigns it to [Var] |
Is [Var] In [Furpile]? | Returns 0 if [Var] is in [Furpile] |
Escort [Var 1] To [Var 2] From [List/Furpile] | Removes [{Furpile member/List index}] from [List/Furpile] and assigns it to [Var 2] |
Measure [Var 1]'s Tail Length To [Var 2] | Assigns the length of [Var 1] to [Var 2] |
Syntax
EsoFur syntax requires that every keyword have its first letter be capitalized.
To declare a string, use "Double Quotes", single quotes are invalid to create strings.
Errors
Error | Console Log |
---|---|
No start of program | (empty) |
No end of program | UNENDING PAIN AND SUFFERING |
Undeclared variable | [Var] WASN'T NOTICED |
Local variable called out of scope | LEASH TOO SHORT |
Jump to unknown marking | UNKNOWN MARKING: [Marking] |
Invalid Casting | TRANSFORMATION FAILED |
No proper syntax | SYNTAX ERROR |
Start roleplay without end | WHEN DOES IT EVER END |
End roleplay without start | WHEN DID IT EVER START |
Popping of empty/non-list | [Var] DIDN'T HAVE A RAFFLE |
Adding duplicates to a Furpile | WHOS THE FAKE ONE? |
Unmatching Maws/Paws | WHICH IS BETTER? PAWS OR MAWS? |
Something is not in Title Case | TAKE OFF YOUR FURSUIT HEAD I CAN'T HEAR YOU |
Examples
99 Bottles Of Beer in EsoFur.
OwO What's This? Notices Your Beer 99 Pounces On Beer Notices Your Text1 Notices Your Text2 Notices Your Text3 Notices Your Temp " Bottles Of Beer On The Wall, " Pounces On Text1 " Bottles Of Beer. Take One Down, Pass It Around, " Pounces On Text2 " Bottles Of Beer On The Wall." Pounces On Text3 *Starts Roleplaying* Look! Beer And Text1 And Beer And Text2 Joined The Temp Howl Temp Beer Pays 1 Temp Gets Canceled Look! Beer And Text3 Joins The Temp Howl Temp Temp Gets Canceled *Stops Roleplaying Because Of Beer* QwQ
Truth Machine
OwO What's This? Notices Your Input Boop The User For Input Input Nuzzles "1" Howl 0 Nuzzles 5 Marks "1" *Starts Roleplaying* Howl 1 *Stops Roleplaying Because Of Input* QwQ
Fibb Sequence to User input
OwO What's This? Notices Your Prev1 Notices Your Prev2 Notices Your Input Notices Your Curr Boop The User For Input 0 Pounces On Prev1 1 Pounces On Prev2 0 Pounces On Curr *Starts Roleplaying* Howl Curr Curr Inflates By Prev2 Prev1 Pounces On Prev2 Curr Pounces On Prev1 Input Pays 1 *Stops Roleplaying Because Of Input* QwQ
Notes
Furpiles is a lists that are Unordered, Unchangeable, and No duplicates
Labels are referred to as Markings, sometimes as Marks
Implementation
A W.I.P implementation of Esofur in python is being worked on at https://github.com/TaserTheFox/EsoFur-Interpreter