Added negative number support in the tokenizer.
This commit is contained in:
+17
-1
@@ -24,6 +24,17 @@ def get_tokens_from_expression_string(expression_string):
|
||||
parsing_number = True
|
||||
tmp = tmp + c
|
||||
continue
|
||||
|
||||
elif c == '-' and not parsing_number:
|
||||
if expression_string[i + 1] == '.' or expression_string[i + 1].isdigit():
|
||||
tmp = "-"
|
||||
parsing_number = True
|
||||
else:
|
||||
tokens.append(token.Token(c, token.TokenType.get_operator(c)))
|
||||
parsing_number = False
|
||||
tmp = ""
|
||||
continue
|
||||
|
||||
elif c == '(':
|
||||
if parsing_number:
|
||||
tokens.append(token.Token(tmp, token.TokenType.constant))
|
||||
@@ -50,7 +61,7 @@ def get_tokens_from_expression_string(expression_string):
|
||||
if len(tokens) > 1:
|
||||
lookBehind = tokens[-1]
|
||||
if lookBehind.type == token.TokenType.exp_end:
|
||||
tokens.append(token.Token("^", token.TokenType.power))
|
||||
tokens.append(token.Token("^", token.TokenType.power))
|
||||
|
||||
if (i + 1) < len(expression_string):
|
||||
lookAHead = expression_string[i + 1]
|
||||
@@ -73,6 +84,11 @@ def get_tokens_from_expression_string(expression_string):
|
||||
|
||||
return tokens
|
||||
|
||||
def peek_list(tokens):
|
||||
if tokens:
|
||||
return tokens[-1]
|
||||
else:
|
||||
raise IndexError("The token list is empty.", tokens)
|
||||
|
||||
def replace_variables(tokens, new_constants):
|
||||
newTokenList = []
|
||||
|
||||
Reference in New Issue
Block a user