def repl(cls): print('Welcome to the Monito REPL\n') runtime = Monito() line_breaks = 0 code_input = '' while runtime.active: if line_breaks == 0: prompt = '>> ' else: prompt = '\t' code_input += cls.input(prompt) balanced, fail_index = Parser.balanced_parens(code_input) if not balanced and fail_index == len(code_input): line_breaks += 1 continue value = runtime.eval(code_input) if value is not None: print(value) line_breaks = 0 code_input = ''
def test_balanced_parens(self): self.assertTrue(Parser.balanced_parens("()")[0]) self.assertFalse(Parser.balanced_parens("(")[0]) self.assertFalse(Parser.balanced_parens(")")[0]) self.assertTrue(Parser.balanced_parens("(a)")[0]) self.assertTrue(Parser.balanced_parens("[][]")[0]) self.assertTrue(Parser.balanced_parens("(a [b] (c {d}))")[0]) self.assertTrue(Parser.balanced_parens("(ab [c e (e) {a}] [d])")[0]) self.assertFalse(Parser.balanced_parens("(a))")[0]) self.assertFalse(Parser.balanced_parens("([][]}")[0]) self.assertFalse(Parser.balanced_parens("{[[]}")[0]) self.assertFalse(Parser.balanced_parens(")ab(")[0])