| f | def itercalc(): | f | def itercalc(): |
| what = (yield None) | | what = (yield None) |
| n | l = [] | n | stack = [] |
| while what: | | while what: |
| match what: | | match what: |
| case '?': | | case '?': |
| n | if len(l) < 1: | n | if len(stack) < 1: |
| print('Insufficient stack') | | print('Insufficient stack') |
| what = (yield None) | | what = (yield None) |
| else: | | else: |
| n | what = (yield l[-1]) | n | what = (yield stack[-1]) |
| case '+': | | case '+': |
| n | if len(l) < 2: | n | if len(stack) < 2: |
| print('Insufficient stack') | | print('Insufficient stack') |
| else: | | else: |
| n | l[-2] += l[-1] | n | stack[-2] += stack[-1] |
| l.pop() | | stack.pop() |
| what = (yield None) | | what = (yield None) |
| case '*': | | case '*': |
| n | if len(l) < 2: | n | if len(stack) < 2: |
| print('Insufficient stack') | | print('Insufficient stack') |
| else: | | else: |
| n | l[-2] *= l[-1] | n | stack[-2] *= stack[-1] |
| l.pop() | | stack.pop() |
| what = (yield None) | | what = (yield None) |
| case '/': | | case '/': |
| n | if len(l) < 2: | n | if len(stack) < 2: |
| print('Insufficient stack') | | print('Insufficient stack') |
| n | elif l[-1] == 0: | n | elif stack[-1] == 0: |
| print('Zero division') | | print('Zero division') |
| else: | | else: |
| n | l[-2] //= l[-1] | n | stack[-2] //= stack[-1] |
| l.pop() | | stack.pop() |
| what = (yield None) | | what = (yield None) |
| case '-': | | case '-': |
| n | if len(l) < 2: | n | if len(stack) < 2: |
| print('Insufficient stack') | | print('Insufficient stack') |
| else: | | else: |
| n | l[-2] -= l[-1] | n | stack[-2] -= stack[-1] |
| l.pop() | | stack.pop() |
| what = (yield None) | | what = (yield None) |
| case _: | | case _: |
| if what.isnumeric() or (what[0] == '-' and what[1:].isnu | | if what.isnumeric() or (what[0] == '-' and what[1:].isnu |
| meric()): | | meric()): |
| t | l.append(int(what)) | t | stack.append(int(what)) |
| else: | | else: |
| print('Unknown command') | | print('Unknown command') |
| what = (yield None) | | what = (yield None) |