Everyonelang
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: likefor(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
andclare
to runtack
andlare
(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