Branchback

Branchback is an esolang where data is stored on a complete binary tree.
== Description ==
The code is written with the root node, then the nodes one level down, left to right, and so on until reaching the bottom. Each node has two children until the second row from the bottom, where some may have one or no children, and none of the nodes at the bottom have any children. This data structure is called a complete binary tree.
Any nodes of the tree which don't have two arguments have at least one empty argument. If the node is an instruction which takes arguments, the empty argument is given a dummy value. Otherwise, the node doesn't care about what's underneath it.
The code is executed starting at the root node. From there, the code moves up and down the left and right branches in the way indicated by the code. Without any jump instructions, and if the root node contains a function, the code will move down the left branch first, continuously moving down the left branch until it reaches a value. Then it will move 1 node up continuously, changing the value accordingly until it reaches the root node. After that, it will go down the right branch, continuously moving down the right branch until it reaches a value. Then it will move 1 node up continuously until it reaches the root node again, and the final answer is this value.
There are four general kinds of instructions which can be in the nodes:
* values, which take no arguments
* input-output instructions, which act like values except for dealing with input and output
* functions, which take only two arguments and return an operation which combines the two arguments in some way
* jump instructions, which 
 Branchback Instructions
Instruction Token 	Action 	Value of Empty Argument
Values 	Values 	Values
decimal numbers (digits 1 to 0)	puts that number into the node of the tree 	N/A
strings within quotes 	puts that string value within a node, with "" representing a single quote 	N/A
na 	acts the same as an empty argument 	N/A
Input-Output Instructions 	Input-Output Instructions 	Input-Output Instructions
readstring 	requests a string as an input value 	N/A
readint 	requests an integer as an input value 	N/A
print 	prints left, then right 	empty string
println 	prints left, then right, with a newline at the end 	empty string
Functions 	Functions 	Functions
add 	left + right 	0
sub 	left - right 	0
mul 	left * right 	0
div 	left / right, no remainder 	1
mod 	left modulo right (remainder of division) 	1
sign 	changes sign of left to sign of right 	1
max 	returns maximum of left and right 	
min 	returns minimum of left and right 	
cont 	takes in the value which led there and passes it upwards, ignoring the other branch 	
Jump Instructions 	Jump Instructions 	Jump Instructions
jleft-MOV-VAL 	jumps MOV nodes down the tree if left value and right value are not equal, with positive values indicating left and negative values indicating right, and acts like the value VAL	N/A
jright-MOV-VAL 	jumps MOV nodes down the tree if left value and right value are not equal, with positive values indicating right and negative values indicating left, and acts like the value VAL	N/A
jup-MOV-VAL 	jumps MOV nodes up the tree if left value and right value are not equal, and acts like the value VAL 	N/A
== Computational Class ==
I know better than to randomly assume the computational class at this point. However, the language doesn't really have any memory, so it's probably not Turing-complete.
== Valid Examples of Code == 
=== Adding One and Two ===
 add 1 2
=== Hello World ===
All of these should print Hello, World!
print "Hello, World!"
print na "Hello, World!"
print "Hello, World!" na
print "Hello, " "World!"
print "Hello," " World!" na na na na na na na na na na na na na na na na "Batman!"
print "Hello, " "World!" "na na na na na na na na na na na na na na na na Batman!"
Category:Languages
Category:Works-in-Progress
Category:Tree-based
Category:Unimplemented
Category:2022