# TODO: Add fast exponentiation, modular arithmetic, # sqrt, gcd print('Type "help" to learn about what options are available.') while True: try: text = input('>>> ') if text.strip().lower() == 'quit': sys.stdout.write('\n') break elif text.strip().lower() == 'help': print("This shell can handle the following operations:") print("+, -, *, /, //, %, **") else: lexer = Lexer(text) tokens = list(lexer.generateTokens()) parser = Parser(tokens) expression = parser.parse() interpreter = Interpreter() answer = interpreter.evaluate(expression) if answer: print(answer) except EOFError: sys.stdout.write('\n') break except KeyboardInterrupt: #ctrl+c sys.stdout.write('\nKeyboardInterrupt\n') continue except Exception as e: print(e)
from lexer import Lexer from node_parser import Parser from interpreter import Interpreter exp = input("> ") lex = Lexer(exp) tokens = lex.generateTokens() parse = Parser(tokens) parseTree = parse.parse() if parseTree: interpreter = Interpreter() result = interpreter.visit(parseTree) print(result)
from lexer import Lexer while True: text = input('Expression: ') lexer = Lexer(text) tokens = lexer.generateTokens() print(list(tokens))