May-27-2025, 01:29 PM
Hello and I'm trying to make a custom language (again) and I came across this problem
I got an error but without an reason:
I got an error but without an reason:
Error:>>> 1
Traceback (most recent call last):
File "main.py", line 6, in <module>
print(lexer.get_tokens())
^^^^^^^^^^^^^^^^^^
File "reader.py", line 22, in get_tokens
elif isinstance(eval(save), int) and not isinstance(eval(self.text[char + 1]), int):
^^^^^^^^^^Full Code: 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 else f'{self.type}'
class Lexer:
def __init__(self, text):
self.text = text
def get_tokens(self):
tokens = []
save = ''
for char in self.text:
if char == ' ' or char == '\t':
pass
elif char == ',':
tokens += save
save = ''
elif isinstance(eval(save), int) and not isinstance(eval(self.text[char + 1]), int):
tokens.append(Token('TT_INT', eval(save)))
elif isinstance(eval(save), float) and (not isinstance(eval(self.text[char + 1]), int) or self.text[char + 1] == '.'):
tokens.append(Token('TT_FLOAT', eval(save)))
elif isinstance(eval(save), bool):
tokens.append(Token('TT_BOOL', eval(save)))
elif char == '+':
tokens.append(Token('TT_PLUS'))
elif char == '-':
tokens.append(Token('TT_MINUS'))
elif char == '*':
tokens.append(Token('TT_MULTI'))
elif char == '/':
tokens.append(Token('TT_DIVIDE'))
elif char == '$':
tokens.append(Token('TT_VARIABLE'))
else:
save += char
return tokens
