EsoFur

From Esolang
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.

Commands
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

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?

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