# AEAV

**AEAV**(**A**n **E**solang **A**bout **V**ariables) is an esolang designed by User:Infinitehexagon that uses variables to store values.

## Inputting

Inputting uses the tag `_input_`

.

test = _input_

## Variables

To create a variable start the name of the variable followed by the keyword "is" and the value or string. If you want to concatenate a non-keyword value into a variable add a $$ before the value.

test = "Hello, " test = $$ "World!"

Setting a variable to itself will concatenate the current value of the variable twice. This program will assume that test equals `Hello, `

from before and join the string 2 times. Repeating this will cause the variable to exponentially join forever.

loop 1 test = [test] ;loop

Returns "`Hello, Hello, Hello...`

"

### ;(Semicolon)

The semicolon is used at the start of instructions to end tags like HTML tags, although they are only used for some instructions.

loopi (loops infinitely) out test ;loopi

### Random

To set a variable to a random value, use a hyphen and input 2 numbers in this format: `a-b`

test = 1-3 out test

## Functions

Making a function is quite easy. All you have to do is use "`new`

" followed by the name of the function. After that, define the function and use the Semicolon tag followed by the name of the function. If you want arguments in your function add a letter eg. "`(a)`

" to the name of the function.

new negate (a) (a) = (a) mul -1 ;negate

### Variable Built-In Functions

Instruction / Function | Example / Keyword | Description |
---|---|---|

mod | test = 9 mod 3 (Returns 0) | Get the modulo of 2 arguments a and b and return it into to the variable. |

sub | test = 9 sub 3 (Returns 6) | Get the difference between 2 arguments a and b and return it into the variable. |

add | test = 9 add 3 (Returns 12) | Add 2 arguments a and b and return it into the variable. |

div | test = 9 add 3 (Returns 3) | Get the quotient of 2 arguments a and b and return it into the variable. |

pow | test = 9 pow 3 (Returns 729) | Raise argument a to the power of argument b and return it into the variable. |

mul | test = 9 mul 3 (Returns 27) | Get the product of argument a and argument b and return it into the variable. |

> | if test > a | Return a true value if the variable is greater than argument a. |

< | if test < a | Return a true value if the variable is less than argument a. |

= | if test = a | Return a true value if the variable equal to argument a. Else, skip the next line. |

! | if test ! a | Return a true value if the variable is not a nonzero value. |

& | if test & a | Return a true value if the variable and argument a are a nonzero value. |

## Instructions

Instruction | Example | Description |
---|---|---|

rev | rev test | Reverse the order of variable a eg. "Hello, " -> " ,olleH" |

len | len test | Return the length of argument a |

out | out a | Output argument a |

loop | loop 2(n) | loop n times |

loopi | - | loop infinitely |

## Program Examples

### Hello World Program

helloworld = "Hello, " helloworld = $$ "World!" out helloworld

### Counter

counter = 1 loopi counterc = [counter] counterc = $$ ", " out counterc counter = 1 + [counter] ;loopi

Outputs `1, 2, 3.....,`

### Truth Machine

truthmachine = _input_ if truthmachine = 1 loopi out truthmachine if truthmachine = 1 ;loopi

### Cat Program

input = _input_ out input

### Rock Paper Scissors Game

computer = 1-3 cpuchoice = none new rps rock = 1 paper = 2 scissors = 3 ;rps loopi message1 = "Input 1, 2, or 3." out message1 choice = _input_ if choice = 1 cpuandplayerchoice = "You chose " if choice = 1 cpuandplayerchoice = $$ "rock! The computer chose " if computer = 1 cpuchoice = "rock" if choice = 1 cpuandplayerchoice = "You chose " cpuandplayerchoice = $$ "rock! The computer chose " if computer = 2 cpuchoice = "paper" if choice = 1 cpuandplayerchoice = "You chose " if choice = 1 cpuandplayerchoice = $$ "rock! The computer chose " if computer = 3 cpuchoice = "scissors" if choice = 2 cpuandplayerchoice = "You chose " if choice = 2 cpuandplayerchoice = $$ "paper! The computer chose " if computer = 1 cpuchoice = "rock" if choice = 2 cpuandplayerchoice = "You chose " if choice = 2 cpuandplayerchoice = $$ "paper! The computer chose " if computer = 2 cpuchoice = "rock" if choice = 2 cpuandplayerchoice = "You chose " if choice = 2 cpuandplayerchoice = $$ "paper! The computer chose " if computer = 3 cpuchoice = "scissors" if choice = 3 cpuandplayerchoice = "You chose " if choice = 3 cpuandplayerchoice = $$ "scissors! The computer chose " if computer = 1 cpuchoice = "rock" if choice = 3 cpuandplayerchoice = "You chose " if choice = 3 cpuandplayerchoice = $$ "scissors! The computer chose " if computer = 2 cpuchoice = "paper" if choice = 3 cpuandplayerchoice = "You chose " if choice = 3 cpuandplayerchoice = $$ "scissors! The computer chose " if computer = 3 cpuchoice = "scissors" cpuandplayerchoice = $$ "[cpuchoice]." out cupandplayerchoice ;loopi

### XKCD Random Number

xkcd = 4 (Non-random version) out xkcd xkcd = 1-4 (Random version) out xkcd

### n^2

squared = _input_ squared = [squared] pow 2 out squared

## Output to AEAV translation

Output | AEAV |
---|---|

Input | input = _input_ |

Output "a" | output = _input_ \n out output |

Output the input | input = _input_ \n out input |