This commit is contained in:
itamar 2026-04-10 16:39:57 +02:00
commit 1ac693fdc2
Signed by: itamar
SSH key fingerprint: SHA256:Dv6UzB9hN8q8FUgMR/7X3DTFpE/vSB2m05+KNnxM4B0
9 changed files with 670 additions and 0 deletions

36
Calculator.py Normal file
View file

@ -0,0 +1,36 @@
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()