py-calc/Calculator.py
2026-04-10 16:39:57 +02:00

36 lines
712 B
Python

from interpeter import Interpeter
from ParserError import ParserError
from lexer import Lexer
import traceback
from parser_ import Parser
# 1 % [2 + !3 * 8] @ 2 $ -321.123 - ~12 + 221 & 1000 ^ -1
def main():
while True:
try:
expr = input("> ")
expr = Parser.strip_str(expr)
lexer = Lexer(expr)
tokens = lexer.generate_tokens()
parser = Parser(tokens)
tree = parser.parse()
if not tree: continue
interpeter = Interpeter()
value = interpeter.visit(tree)
print(value)
except ParserError as e:
print("ParserError: ", str(e))
except Exception as e:
print(type(e), end ='')
print(" occured\n" + str(e))
traceback.print_exc()
if __name__ == '__main__':
main()