feat: add task 2 calculator draft

This commit is contained in:
2026-04-09 17:28:40 +06:00
parent 67e25b3f72
commit 3ac1c8b2a1
6 changed files with 222 additions and 1 deletions

28
task2/main.py Normal file
View File

@@ -0,0 +1,28 @@
from collections import deque
from icecream import ic
from typing import Iterable
from command_translation import translate
from tokenizer import tokenize
from math_objects import Token, Integer, Operator
equation: str = "1+ 2+3/3-1"# input()
tokens: Iterable[Token] = tokenize(equation)
sorted_tokens: Iterable[Token] = translate(tokens)
token_stack: deque[Token] = deque()
for token in sorted_tokens:
if not isinstance(token, Operator):
token_stack.append(token)
continue
b, a = token_stack.pop(), token_stack.pop()
ic(a.value, token.value, b.value)
new_integer = Integer(eval(f"{a.value}{token.value}{b.value}"))
token_stack.append(new_integer)
ic(len(token_stack))
print(token_stack.pop().value)