36 lines
712 B
Python
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()
|