예제 #1
0
# 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)
예제 #2
0
파일: paromat.py 프로젝트: HuM4NoiD/paromat
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)
예제 #3
0
from lexer import Lexer

while True:
    text = input('Expression: ')
    lexer = Lexer(text)
    tokens = lexer.generateTokens()
    print(list(tokens))