feat(task2): process equations with "()"

This commit is contained in:
2026-04-09 18:25:10 +06:00
parent 391eaa30a8
commit bb5c00c528
3 changed files with 36 additions and 12 deletions

View File

@@ -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: