def __init__(self, filename="main.bf", direct_input=None):
        """
        The heart of the beast. This is where all the logic lives for interpreting a program
        :param filename: The file name to run. It will by default run main.bf
        :param direct_input: Instead of a file to read, you can pass pyterp a string here and it will run it
        :return:
        """
        self.source_file = filename
        if direct_input is not None:
            self.program = self._parse_program(direct_input)
        else:
            self.program = self._load_file(filename)

        self._run()
def __init__ ( self , filename = "main.bf" , direct_input = None ) : self . source_file = filename if direct_input is not None : self . program = self . _parse_program ( direct_input ) else : self . program = self . _load_file ( filename ) self . _run ( )
The heart of the beast. This is where all the logic lives for interpreting a program
        :param filename: The file name to run. It will by default run main.bf
        :param direct_input: Instead of a file to read, you can pass pyterp a string here and it will run it
        :return: