feat(task2): process equations with "()"
This commit is contained in:
@@ -6,7 +6,6 @@ from math_objects import Integer, Operator, Parenthesis, Token
|
||||
|
||||
def tokenize(string: str) -> Iterable[Token]:
|
||||
buffer: deque[str] = deque()
|
||||
prediction: Optional[Literal["number"]] = None
|
||||
|
||||
def _take_buffer() -> str:
|
||||
string = "".join(buffer)
|
||||
@@ -15,14 +14,10 @@ def tokenize(string: str) -> Iterable[Token]:
|
||||
|
||||
for c in string:
|
||||
if c.isdigit():
|
||||
if prediction != "number" and buffer:
|
||||
yield Integer.create_from_string(_take_buffer())
|
||||
prediction = "number"
|
||||
buffer.append(c)
|
||||
elif c in ["+", "-", "*", "/", "(", ")"]:
|
||||
if buffer:
|
||||
yield Integer.create_from_string(_take_buffer())
|
||||
prediction = None
|
||||
match c:
|
||||
case "+" | "-":
|
||||
yield Operator(c, precedence=1)
|
||||
@@ -30,7 +25,6 @@ def tokenize(string: str) -> Iterable[Token]:
|
||||
yield Operator(c, precedence=2)
|
||||
case _:
|
||||
yield Parenthesis(c) # type: ignore
|
||||
prediction = None
|
||||
elif c == " ":
|
||||
pass
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user