Equal command
This commit is contained in:
		@@ -244,6 +244,92 @@ def generateCode(line: list[str], offset: int) -> str:
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        returnval += '<[<]' + '<' * (offset-1)
 | 
					        returnval += '<[<]' + '<' * (offset-1)
 | 
				
			||||||
        return returnval
 | 
					        return returnval
 | 
				
			||||||
 | 
					    elif keyword == 'equal':
 | 
				
			||||||
 | 
					        if len(line) != 4:
 | 
				
			||||||
 | 
					            error(f'Equal command requires 3 arguments (got {len(line)-1})')
 | 
				
			||||||
 | 
					        returnval = '>' * offset + '[>]'
 | 
				
			||||||
 | 
					        idx = getIndex(line[1])
 | 
				
			||||||
 | 
					        for var in variables[:idx]:
 | 
				
			||||||
 | 
					            if var.bytes >= 0:
 | 
				
			||||||
 | 
					                returnval += '>' * (var.bytes+1)
 | 
				
			||||||
 | 
					            elif var.bytes == -1:
 | 
				
			||||||
 | 
					                returnval += '>[>]'
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                error()
 | 
				
			||||||
 | 
					        returnval += '>'
 | 
				
			||||||
 | 
					        for i in range(4):
 | 
				
			||||||
 | 
					            returnval += '[-'
 | 
				
			||||||
 | 
					            returnval += '>' * (4-i)
 | 
				
			||||||
 | 
					            for var in variables[(idx+1):]:
 | 
				
			||||||
 | 
					                if var.bytes >= 0:
 | 
				
			||||||
 | 
					                    returnval += '>' * (var.bytes+1)
 | 
				
			||||||
 | 
					                elif var.bytes == -1:
 | 
				
			||||||
 | 
					                    returnval += '>[>]'
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    error()
 | 
				
			||||||
 | 
					            returnval += '>' * (i+1) + '+' + '<' * (i+1)
 | 
				
			||||||
 | 
					            for var in reversed(variables[(idx+1):]):
 | 
				
			||||||
 | 
					                if var.bytes >= 0:
 | 
				
			||||||
 | 
					                    returnval += '<' * (var.bytes+1)
 | 
				
			||||||
 | 
					                elif var.bytes == -1:
 | 
				
			||||||
 | 
					                    returnval += '<[<]'
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    error()
 | 
				
			||||||
 | 
					            returnval += '<<<<<+' + '>' * (i+1) + ']'
 | 
				
			||||||
 | 
					            returnval += '<' * (i+1) + '[' + '>' * (i+1) + '+' + '<' * (i+1) + '-]' + '>' * (i+2)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        # Copy the above, but subtract from duplicate
 | 
				
			||||||
 | 
					        idx2 = getIndex(line[2])
 | 
				
			||||||
 | 
					        for var in variables[(idx+1):idx2]:
 | 
				
			||||||
 | 
					            if var.bytes >= 0:
 | 
				
			||||||
 | 
					                returnval += '>' * (var.bytes+1)
 | 
				
			||||||
 | 
					            elif var.bytes == -1:
 | 
				
			||||||
 | 
					                returnval += '>[>]'
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                error()
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					        returnval += '>'
 | 
				
			||||||
 | 
					        for i in range(4):
 | 
				
			||||||
 | 
					            returnval += '[-'
 | 
				
			||||||
 | 
					            returnval += '>' * (4-i)
 | 
				
			||||||
 | 
					            for var in variables[(idx2+1):]:
 | 
				
			||||||
 | 
					                if var.bytes >= 0:
 | 
				
			||||||
 | 
					                    returnval += '>' * (var.bytes+1)
 | 
				
			||||||
 | 
					                elif var.bytes == -1:
 | 
				
			||||||
 | 
					                    returnval += '>[>]'
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    error()
 | 
				
			||||||
 | 
					            returnval += '>' * (i+1) + '-' + '<' * (i+1)
 | 
				
			||||||
 | 
					            for var in reversed(variables[(idx2+1):]):
 | 
				
			||||||
 | 
					                if var.bytes >= 0:
 | 
				
			||||||
 | 
					                    returnval += '<' * (var.bytes+1)
 | 
				
			||||||
 | 
					                elif var.bytes == -1:
 | 
				
			||||||
 | 
					                    returnval += '<[<]'
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    error()
 | 
				
			||||||
 | 
					            returnval += '<<<<<+' + '>' * (i+1) + ']'
 | 
				
			||||||
 | 
					            returnval += '<' * (i+1) + '[' + '>' * (i+1) + '+' + '<' * (i+1) + '-]' + '>' * (i+2)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for var in variables[(idx2+1):]:
 | 
				
			||||||
 | 
					            if var.bytes >= 0:
 | 
				
			||||||
 | 
					                returnval += '>' * (var.bytes+1)
 | 
				
			||||||
 | 
					            elif var.bytes == -1:
 | 
				
			||||||
 | 
					                returnval += '>[>]'
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                error()
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        returnval += '>[<+>[-]]>[<<+>>[-]]>[<<<+>>>[-]]>[<<<<+>>>>[-]]<<<+<[>-<[-]]'
 | 
				
			||||||
 | 
					        for var in reversed(variables):
 | 
				
			||||||
 | 
					            if var.bytes >= 0:
 | 
				
			||||||
 | 
					                returnval += '<' * (var.bytes+1)
 | 
				
			||||||
 | 
					            elif var.bytes == -1:
 | 
				
			||||||
 | 
					                returnval += '<[<]'
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                error()
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					        returnval += '<[<]' + '<' * (offset-1)
 | 
				
			||||||
 | 
					        variables.append(Variable(line[3], 1, 0))
 | 
				
			||||||
 | 
					        return returnval
 | 
				
			||||||
    elif keyword == 'if':
 | 
					    elif keyword == 'if':
 | 
				
			||||||
        if len(line) != 2:
 | 
					        if len(line) != 2:
 | 
				
			||||||
            error(f'If command requires 1 argument (got {len(line)-1})')
 | 
					            error(f'If command requires 1 argument (got {len(line)-1})')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,8 @@ Print a string: `print name`
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Increment an int: `inc name`
 | 
					Increment an int: `inc name`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Check if two numbers are equal, and store the result in `cond`: `equal num1 num2 cond`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If statement: 
 | 
					If statement: 
 | 
				
			||||||
```py
 | 
					```py
 | 
				
			||||||
if bool
 | 
					if bool
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,13 @@
 | 
				
			|||||||
 | 
					int num1 796
 | 
				
			||||||
string str1 -1 "Hello, world!"
 | 
					string str1 -1 "Hello, world!"
 | 
				
			||||||
int num 100
 | 
					int num2 795
 | 
				
			||||||
bool cond true
 | 
					string str2 -1 "World, hello?"
 | 
				
			||||||
 | 
					equal num1 num2 cond
 | 
				
			||||||
if cond
 | 
					if cond
 | 
				
			||||||
    inc num
 | 
					    print str1
 | 
				
			||||||
 | 
					end if
 | 
				
			||||||
 | 
					inc num2
 | 
				
			||||||
 | 
					equal num1 num2 cond2
 | 
				
			||||||
 | 
					if cond2
 | 
				
			||||||
 | 
					    print str2
 | 
				
			||||||
end if
 | 
					end if
 | 
				
			||||||
		Reference in New Issue
	
	Block a user