You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
def parse(expr):
|
|
|
|
|
|
|
|
opers = ['+', '-', '*', '/', '=']
|
|
|
|
|
|
|
|
num_par = 0
|
|
|
|
tokenized = []
|
|
|
|
temp_string = ""
|
|
|
|
index = 0
|
|
|
|
while index < len(expr):
|
|
|
|
if expr[index] in opers:
|
|
|
|
tokenized.append(expr[index])
|
|
|
|
index += 1
|
|
|
|
|
|
|
|
elif expr[index].isdigit() or expr[index] == '.':
|
|
|
|
while (index < len(expr)) and (expr[index].isdigit() or expr[index] == '.'):
|
|
|
|
temp_string += expr[index]
|
|
|
|
index += 1
|
|
|
|
tokenized.append(temp_string)
|
|
|
|
|
|
|
|
elif expr[index] == '(':
|
|
|
|
num_par = 1
|
|
|
|
temp_string += expr[index]
|
|
|
|
index += 1
|
|
|
|
while index < len(expr) and num_par != 0:
|
|
|
|
temp_string += expr[index]
|
|
|
|
if expr[index] == '(':
|
|
|
|
num_par += 1
|
|
|
|
if expr[index] == ')':
|
|
|
|
num_par -= 1
|
|
|
|
index += 1
|
|
|
|
|
|
|
|
tokenized.append(temp_string)
|
|
|
|
|
|
|
|
elif expr[index].isalpha(): # If you encounter a variable
|
|
|
|
temp_string += expr[index]
|
|
|
|
index += 1
|
|
|
|
while index < len(expr) and expr[index].isalpha():
|
|
|
|
temp_string += expr[index]
|
|
|
|
index += 1
|
|
|
|
tokenized.append(temp_string)
|
|
|
|
|
|
|
|
else:
|
|
|
|
index += 1
|
|
|
|
|
|
|
|
temp_string = ""
|
|
|
|
|
|
|
|
return tokenized
|