Everyonelang

From Esolang
Jump to navigation Jump to search

Everyonelang is an esolang that everyone can add commands to it! It is not joke esolang and commands like "if input is qypwieyriweutoiwyqeweutoweyotuwerywqeutwqeryiutoweytoweyiuweoytwqoytowerweut destroy your computer" or "if variable X is 73489126478235623452634753626435432756324235617293857902364902735906215972349172.217359027634723957129640-75986249723596231589 delete France from universe" will be deleted. The file extension for Everyonelang program is .evry

Data

Everyonelang has a stack with numbers and strings, a 2D grid of 32-bit integers, and a brainfuck-styled tape (which can only be modified with the bf command). It also has support for named variables, which can be declared and modified with define() or clare () and x>y.

The magic number

-76 is the "magic number". It can do different things when supplied as a parameter.

When supplied as a ... Description Example
string Pop the top value off the stack and convert it to a string. stack "Cool example": stack "a" clare -76: a>-76 (This will create a variable "a" and assign "Cool example" to it.)
number Pop the top value off the stack and use that. If the top value is a string and cannot be converted (like "abc" can't convert to a number), then raise an error. This will still work if a command needs a number parameter. negative-76:
variable name Same as string. (See string example)

Instructions

All commands must end with a colon

Parameter types:

(#x)  A number.
("x")  A string.
(vx)  A variable named x.
(x)  A number or string x.
Command Description Creator
stack (x) Push (x) to the stack. Qawtykit
clare (vx) declare a variable named (vx) Qawtykit
bf ("x") Interpret the string as brainfuck code. Evylah
x>y Set the variable x to value y. If the variable doesn't exist, raise an error. Evylah
negative-76 Push -76 to the stack. This was added because -76 was the special number.
🫎 Take user input, and push it onto the stack. 97202
🦌 Output the top value of the stack, and pop it off the stack. 97202
ohno (#x) (y) (z) go to the (#x)th CHARACTER of the program if (y) equals (z). Jumping to a character that doesn't exist will end the program. If (y) and (z) are not there, the jump is unconditional. Qawtykit
+ - * / % pop x and y off the stack, and push y (operation) x. Evylah
? (#x) (#y) Push a random number between (#x) and (#y) inclusive. Evylah
lare (a) swap the top and the bottom values of the stack. The argument does nothing. Qawtykit
tack (a) Duplicate the (a)th value of the stack and insert it at the top. Qawtykit
NO-OP Qawtykit
cat Pop the first two values in the stack and concatenate the first and the second in that order. The type of those values does not matter. Qawtykit
var-to-stack (vx) Pushes the value of variable (x) onto the stack Evylah
spin{} All commands within the spin{} block will be executed in a random order. (This could easily cause an error if you're not careful) ChatGPT
len (vx) Assign the amount of values in the stack to variable (vx) Qawtykit
< Toggles LTM (Less Than Mode) Qawtykit
F ("x") (y) (#z) Push characters (y) to (#z) of file ("x") to the stack. If ("x") does not exist, create it in the same folder as the program. If (#z) is not filled out, rename file ("x") to string (y) Qawtykit
4 (vx) (#y) (#z) (#w) for loop, like for(int x=y;x<=z;x+=w) in C. Loop body is all the commands before its matching 5 command. None1
5 Marks the end of loop body in a 4 loop. None1
repl (#x) (vy) replace character (#x) of the source code with the value of variable (vy). Evylah
pop pop stack and discard None1
[ Creates a label at the current position in the program. Using [ again will overwrite any previous labels. Evylah
] (vx) Jump to the label if (vx) is greater than or equal to zero. Evylah
put (#w) (#x) (#y) Set grid cell ((#x), (#y)) to (#w). Qawtykit
get (#x) (#y) Push value of grid cell at ((#x), (#y)) to to the stack. Evylah
print (str) Output the str. 尸尺丫与工巨冂㠪丅口下尺丫
input (__prompt, *args) Enter any number of variables with "__prompt" as a prompt. Do you know why here needs *args? 尸尺丫与工巨冂㠪丅口下尺丫
operation(mode, *args) Perform an operation and store its results in "register01". Do you know why here needs *args? 尸尺丫与工巨冂㠪丅口下尺丫
define(name, type, value) Define a variable. value can be omitted. 尸尺丫与工巨冂㠪丅口下尺丫
$A[B] put B on stack with name A. to reference A its written: $A Yayimhere

Less Than Mode

  • the ohno command checks for if (y) is less than (z) instead of equal.
  • the F command writes to file ("x") instead. With (y) being a string deciding what to write, and (#z) being the character # to insert ("x") in front of. If (#z) is a character that does not exist, the text will be inserted at the last character. If (#y) and (#z) are not filled out, file ("x") will be ran as an Everyonelang program with the top of the stack being made as a variable called arg
  • tack will move the (a)th value to the top instead of duplicating it.
  • pushes a newline to the stack.
  • spin{} will run only one random command instead of all commands.
  • ] will jump if the variable is less than zero.
  • 4 loops count down instead of up: like for(int x=y;x>=z;x-=w) in C.

Error messages

Error Message
Pop from empty stack Elements cannot be poped from an empty stack. (The fscking stack is empty, where did you get the elements for me to pop?!)
Not enough supplied parameters Are you trying to plot against me?!
Unmatched 4 and 5 commands Command mismatch!

Examples

Hello World

This example does not use the bf command because that would be lame

stack "Hello, World!": 🦌:

And Here is a better version.

print "Hello, world!":

A+B problem

🫎:
🫎:
+:
🦌:

I'm not sure if you have to end lines with colons or if you separate the code with newlines. --EvyLah (talk) 00:53, 25 February 2024 (UTC)

they end with colons, as specified at the top of the instructions section. I gave it some more emphasis to prevent confusion in the future. (and i fixed the code) -- Qawtykit

I finded a readable version. -- 尸尺丫与工巨冂㠪丅口下尺丫 贰拾叁时壹拾柒分,贰零贰肆年肆月贰拾叁日(东捌时区)

define(A, int):
define(B, int):
input("", A, B):
print(operation("Addition", A, B)):

Cat

•: 🫎: 🦌: ohno 1 1 1:

This program uses the ohno command with three 1s for an unconditional jump back to the start of the program

Truth-machine

clare input: 🫎: input>-76: ohno 72 input 1: stack 0: 🦌: ohno -1 1 1: stack 1: 🦌: ohno 72 1 1:

This program first declares the variable input and assigns it to the user's input by using the magic number with the x>y command. It then uses the ohno command to jump to the infinite loop (character 72) if the input is 1.

If it does not jump, it outputs zero and terminates by jumping to character -1. If it does jump, then it does the truth-machine thing and prints infinite 1s.

Self modification demonstration

clare a: 🫎: a>-76: ohno 50 a 1: 1:stack 0: 🦌: ohno 0: repl 37 a: a<"37": repl 48 a: ohno 32:

This is a modification of the truth-machine that uses repl. The program starts like the original truth-machine, but if the input is 1, instead of jumping to an infinite loop, it makes the infinite loop by replacing the characters to output 0.

Count from 1 to 100

clare x: 4 x 1 100 1: var-to-stack x: 🦌: 5:

The program declares a variable named x, uses the 4 loop to loop from 1 to 100, and then prints the number by pushing x onto stack and using 🦌 to print it.

Coin

stack "Heads": stack "Tails": spin{🦌: pop: }:

Prints Heads or Tails randomly.

Random number generator (one-time)

<: spin{stack 1: stack 2: stack 3: stack 4: stack 5}: 🦌:

Chooses to push 1, 2, 3, 4 or 5 to the stack randomly and outputs it.

Random number generator 2 (also one-time)

stack 1: stack 2: stack 3: stack 4: stack 5: spin{🦌: pop: pop: pop: pop:}:

4 digit PIN generator

clare a: 4 a 0 9 1: var-to-stack a: 5: spin{🦌: 🦌: 🦌: 🦌: pop: pop: pop: pop: pop:}

This will declare the variable a, count up with a going from 0 to 9, and push the value of a every iteration. It then outputs 4 random numbers and pops the rest.

99 bottles of beer

clare bottles: stack 99: bottles>-76: <: <: stack bottles: 🦌: stack " bottles of beer on the wall,": 
🦌: stack bottles: 🦌: stack " bottles of beer.":
🦌: stack "Take one down, pass it around," 🦌: stack bottles: stack 1: -: bottles>-76: stack bottles: 🦌: 
stack " bottles of beer on the wall" <: ohno 42 bottles 2: stack "No bottles of beer on the wall":
stack "Take one down, pass it around,": stack "1 bottle of beer.":
stack "1 bottle of beer on the wall,": 🦌: 🦌: 🦌: 🦌: 

And it doesn't even cheat! But there are no newlines because i forgot about them and I didnt feel like putting them in.

Pro tips

  • You can jump to the middle of stack and clare to run tack and lare

(I don't know how useful this could actually be(it might be why lare has an argument that does nothing))

  • the bf command can be used to make a comment