41 lines
649 B
Python
41 lines
649 B
Python
from lexer import Lexer
|
|
from interpreter import Interpreter
|
|
from constants import DEC
|
|
|
|
|
|
def print_stack(interpreter, stack):
|
|
for item in stack:
|
|
if interpreter.mode == DEC and item.is_integer():
|
|
print(int(item))
|
|
else:
|
|
print(interpreter.mode_func(item))
|
|
|
|
|
|
def main():
|
|
interpreter = Interpreter()
|
|
|
|
while True:
|
|
try:
|
|
text = input('> ')
|
|
except (EOFError, KeyboardInterrupt):
|
|
break
|
|
|
|
if not text:
|
|
continue
|
|
|
|
if text == 'exit':
|
|
break
|
|
|
|
lexer = Lexer(text)
|
|
try:
|
|
stack = interpreter.parse(lexer)
|
|
except Exception as exception:
|
|
print(exception)
|
|
|
|
print_stack(interpreter, stack)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|