EE

From Esolang
Jump to navigation Jump to search

EE is an Esoteric programming language created by User:Goldos24 and MisterJaJo in 2019. It is just another fully backwards compatible one-dimensional brainfuck derivative with 8 extra instructions.

EE
Paradigm(s) imperative
Designed by User:Goldos24, MisterJaJo
Appeared in 2020
Memory system tape-based
Dimensions one-dimensional
Computational class Turing complete
Major implementations Original
Influenced by brainfuck
File extension(s) .e, .ee

Memory

EE has a tape-based Memory system with an extra cell referred to as accumulator which can only be accessed using the $ (copy) and § (paste) instructions.

Instructions

Command Description
> Move the pointer to the right
< Move the pointer to the left
+ Increment the memory cell under the pointer
- Decrement the memory cell under the pointer
. Output the character signified by the cell at the pointer
, Input a character and store it in the cell at the pointer
[ Jump past the matching ] if the cell under the pointer is 0
] Jump back to the matching [ if the cell under the pointer is nonzero
$ Copy the cell under the pointer to the accumulator
§ Paste into the cell under the pointer from the accumulator
" Declare a function
{ Start of function content
} End of function content and return
; Return
( Call a function; Start of function name
) Call a function; End of function name

Example Code

Here is some example code for the EE programming language. You can also use brainfuck code since EE is fully backwards compatible.

Hello, world!

"=0" {[-]}                                                             Sets selected cell to 0 like it is done in brainfuck
"H" {(=0) > (=0) +++++ +++ [- < +++++ ++++ > ] <}                      Sets selected cell to 8x9 / 'H'
"e" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ > ] < + }                Sets selected cell to 10x10 plus 1 / 'e'
"l" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ + > ] < -- }             Sets selected cell to 10x11 minus 2 / 'l'
"o" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ + > ] < + }              Sets selected cell to 10x11 plus 1 / 'o'
"," {(=0) > (=0) ++++ [- < +++++ +++++ + > ] < }                       Sets selected cell to 4x11 / comma
"space" {(=0) > (=0) ++++ [- < +++++ +++ > ] < }                       Sets selected cell to 4x8 / ' '
"w" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ ++ > ] < - }             Sets selected cell to 10x12 minus 1 / 'w'
"r" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ + > ] < ++++ }           Sets selected cell to 10x11 plus 4 / 'r'
"d" {(=0) > (=0) +++++ +++++ [- < +++++ +++++ > ] < }                  Sets selected cell to 10x10 / 'd'
"!" {(=0) > (=0) +++ [- < +++++ +++++ + > ] < }                        Sets selected cell to 3x11 / '!'
(H) .                                                                  Calls 'H' function and outputs selected cell
(e) .                                                                  Calls 'e' function and outputs selected cell
(l) .                                                                  Calls 'l' function and outputs selected cell
(l) .                                                                  Calls 'l' function and outputs selected cell
(o) .                                                                  Calls 'o' function and outputs selected cell
(,) .                                                                  Calls comma function and outputs selected cell
(space) .                                                              Calls 'space' function and outputs selected cell
(w) .                                                                  Calls 'w' function and outputs selected cell
(o) .                                                                  Calls 'o' function and outputs selected cell
(r) .                                                                  Calls 'r' function and outputs selected cell
(l) .                                                                  Calls 'l' function and outputs selected cell
(d) .                                                                  Calls 'd' function and outputs selected cell
(!) .                                                                  Calls '!' function and outputs selected cell

Conditional function call, no loop

Creating the function:

"f" { Place your function content here }

Call f if the selected cell is zero:

"if_zero_call_f" {](f);[}                                              declaring a function which is the same as an if statement
(if_zero_call_f)                                                       call this function when you want to use the if statement

Call f if the selected cell is nonzero:

"if_nonzero_call_f" {[(f);]}                                           declaring a function which is the same as an if statement
(if_nonzero_call_f)                                                    call this function when you want to use the if statement

Infinite loop using a self-calling function

This is a simple infinite loop doing nothing, but repeating:

"loop" {(loop)}                                                        creating the loop function
(loop)                                                                 calling the loop function

Filling your whole memory with an input character

This program asks you for a character, then it fills every cell with that character:

"fill" {$>§(fill)}                                                     creating the 'fill' function
,                                                                      input
(fill)                                                                 calling 'fill'