57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import os
|
|
import sys
|
|
|
|
from Models.Interpreter.Error import Error, ErrorCodes
|
|
from ServiceInitializer import ServiceInitializer
|
|
|
|
|
|
class Main:
|
|
|
|
def __init__(self) -> None:
|
|
self.__services = ServiceInitializer()
|
|
self.__utils = self.__services.utils
|
|
self.__repo = self.__services.repo
|
|
self.__interpreter = self.__services.interpreter
|
|
self.__sly_cclang_interpreter = self.__services.sly_cclang_interpreter
|
|
|
|
def console(self) -> None:
|
|
"""
|
|
Getting code from console input
|
|
:return:
|
|
"""
|
|
i = 0
|
|
while self.__repo.error is None:
|
|
self.__repo.line_number = i + 1
|
|
#self.__interpreter.interpret(input('> '))
|
|
self.__sly_cclang_interpreter.interpret(input('> '))
|
|
i += 1
|
|
|
|
def files(self, file: str) -> None:
|
|
"""
|
|
Getting input from file
|
|
:param file:
|
|
:return:
|
|
"""
|
|
if not os.path.isfile(file):
|
|
self.__utils.runtime_error(Error(ErrorCodes.FileNotFound))
|
|
return
|
|
|
|
if not file.endswith('.cc'):
|
|
self.__utils.runtime_error(Error(ErrorCodes.WrongFileType))
|
|
return
|
|
|
|
f = open(file, 'r', encoding='utf-8').readlines()
|
|
for i in range(0, len(f)):
|
|
self.__repo.line_number = i + 1
|
|
# self.__interpreter.interpret(f[i])
|
|
self.__sly_cclang_interpreter.interpret(f[i])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main = Main()
|
|
print(sys.argv)
|
|
if len(sys.argv) == 2:
|
|
main.files(sys.argv[1])
|
|
else:
|
|
main.console()
|