Updated the tokenizer to include a method to replace variable tokens with the values provided in a list.
This commit is contained in:
+5
-2
@@ -1,7 +1,10 @@
|
|||||||
import token
|
import token
|
||||||
|
import copy
|
||||||
|
|
||||||
def calculate_results(tokens):
|
def calculate_results(tokens):
|
||||||
return handle_add_and_subtract(tokens)
|
new_list = copy.deepcopy(tokens)
|
||||||
|
new_list.reverse()
|
||||||
|
return handle_add_and_subtract(new_list)
|
||||||
|
|
||||||
def handle_parenthesis(tokens, call_has_priority = False):
|
def handle_parenthesis(tokens, call_has_priority = False):
|
||||||
running_value = 0
|
running_value = 0
|
||||||
|
|||||||
@@ -4,22 +4,24 @@ import expression
|
|||||||
import calc_engine
|
import calc_engine
|
||||||
import json
|
import json
|
||||||
|
|
||||||
fileLocation = input('File Path to JSON: ')
|
#fileLocation = input('File Path to JSON: ')
|
||||||
#json = json.loads(open(fileLocation).read())
|
#json = json.loads(open(fileLocation).read())
|
||||||
|
|
||||||
|
|
||||||
#userInput = input('Enter your formula: ')
|
userInput = input('Enter your formula: ')
|
||||||
tokens = tokenizer.get_tokens_from_expression_string("2 + 6 / 2")
|
tokens = tokenizer.get_tokens_from_expression_string(userInput)
|
||||||
with open("expression.json", "r") as f:
|
#with open("expression.json", "r") as f:
|
||||||
j = json.load(f)
|
# j = json.load(f)
|
||||||
exp = expression.Expression(json.loads(j))
|
# exp = expression.Expression(json.loads(j))
|
||||||
print(exp)
|
# print(exp)
|
||||||
#results = calc_engine.calculate_results(tokens.copy())
|
#results = calc_engine.calculate_results(tokens.copy())
|
||||||
#print(results)
|
#print(results)
|
||||||
|
|
||||||
|
tokens = tokenizer.replace_variables(tokens, [23, 46, 89])
|
||||||
|
|
||||||
for t in tokens:
|
for t in tokens:
|
||||||
print("%s (%s) " %(t.value, token.TokenType.get_token_type_name(t.type)), end = "")
|
print("%s (%s) " %(t.value, token.TokenType.get_token_type_name(t.type)), end = "")
|
||||||
print()
|
print()
|
||||||
|
|
||||||
|
|
||||||
def factors(factor_object, starting_point, variable_type)
|
#def factors(factor_object, starting_point, variable_type)
|
||||||
|
|||||||
+10
-4
@@ -69,10 +69,16 @@ def get_tokens_from_expression_string(expression_string):
|
|||||||
tokens.append(token.CToken(c + str(symbols_dic[c]), token.TokenType.variable))
|
tokens.append(token.CToken(c + str(symbols_dic[c]), token.TokenType.variable))
|
||||||
parsing_number = False
|
parsing_number = False
|
||||||
tmp = ""
|
tmp = ""
|
||||||
#When building this list we've effectively ordered the tokens in reverse order from how we want to
|
|
||||||
#process them. So, reverse the order of the list before returning them to the caller, we don't want
|
|
||||||
#the caller to have to worry about such a minor detail.
|
|
||||||
tokens.reverse()
|
|
||||||
|
|
||||||
return tokens
|
return tokens
|
||||||
|
|
||||||
|
|
||||||
|
def replace_variables(tokens, new_constants):
|
||||||
|
newTokenList = []
|
||||||
|
for t in tokens:
|
||||||
|
if t.type == token.TokenType.variable:
|
||||||
|
newTokenList.append(token.CToken(new_constants.pop(0), token.TokenType.constant))
|
||||||
|
else:
|
||||||
|
newTokenList.append(t)
|
||||||
|
|
||||||
|
return newTokenList
|
||||||
|
|||||||
Reference in New Issue
Block a user