from misc.expression import Token def tokenize(text: str) -> list: buffer_num = "" buffer_func = "" tokens = [] for char in text: if Token.isChar(char): buffer_func += char elif Token.isNumber(char) or char == ".": buffer_num += char else: if buffer_num != "": tokens.append(Token(Token.NUMBER, buffer_num)) buffer_num = "" if buffer_func != "": tokens.append(Token(Token.FUNCTION, buffer_func)) buffer_func = "" if char == "(" or char == ")": tokens.append(Token(Token.PARENTHESE, char)) elif char != " ": tokens.append(Token(Token.OPERATOR, char)) if buffer_num != "": tokens.append(Token(Token.NUMBER, buffer_num)) if buffer_func != "": tokens.append(Token(Token.FUNCTION, buffer_func)) return tokens