I was trying to debug this error in my code and I noticed something weird:
if I did the function as if the parameter was a string, it would tell me its a Token type
if I did the function as if the parameter was a Token, it would tell me its a string type
has this ever happened to y'all???
if I did the function as if the parameter was a string, it would tell me its a Token type
if I did the function as if the parameter was a Token, it would tell me its a string type
has this ever happened to y'all???
class Token: def __init__(self, type, value=None): self.type = type self.value = value def __repr__(self): return f'{self.type}: {self.value}' if self.value != None else f'{self.type}' class Lexer: def __init__(self, line): self.line = line def getTokens(self): tokens = [] save = '' for i in range(len(self.line)): char = self.line[i] save += char if save == '0': tokens.append(Token('TT_BINARY', 0)) save = '' elif save == '1': tokens.append(Token('TT_BINARY', 1)) save = '' elif save == ':': tokens.append(Token('TT_SETSLOT')) save = '' elif save == 'S': tokens.append(Token('TT_VARIABLE')) save = '' elif save == ' ' and i != 0: tokens.append(Token('TT_SPACE')) save = '' return tokens def execute(self): tokens = self.getTokens() saveTokens = [] # Stage 1: Group Binary binarySave = '' binaryLoading = False for token in tokens: if token.type == 'TT_BINARY' and not binaryLoading: binaryLoading = True binarySave += str(token.value) elif token.type == 'TT_BINARY': binarySave += str(token.value) else: binaryLoading = False if binarySave != '': saveTokens.append(Token('TT_GBINARY', binarySave)) saveTokens.append(token) binarySave = '' if binarySave != '': saveTokens.append(Token('TT_GBINARY', binarySave)) tokens = saveTokens saveTokens = [] # Stage 2: Replacing Variables skip = False for i in range(len(tokens)): token = tokens[i] if skip: skip = False break if token.type == 'TT_VARIABLE': saveTokens.append(system.slots[System.convert_binary(tokens[i+1])]) skip = True else: saveTokens.append(token) tokens = saveTokens saveTokens = [] for i in range(len(tokens)): token = tokens[i] if token.type == 'TT_SETSLOT': system.slots[System.convert_binary(tokens[i-1].value)] = tokens[i+1] class System: def __init__(self, script): self.script = script self.lexer = Lexer(None) self.slots = {} for i in range(256): self.slots[i] = '' @staticmethod def convert_binary(binary): print(type(binary)) if isinstance(binary, str): reversed = binary[::-1] if isinstance(binary.value, str): reversed = binary.value[::-1] rv = 0 for i in range(len(reversed)): if reversed[i] == '1': rv += 2 ** i return rv def run(self): for line in self.script: self.lexer.line = line self.lexer.execute() system = System([ '11:110' '0:S11' ]) system.run() print(system.slots) 