示例#1
0
文件: monito.py 项目: smaass/monito
    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 = ''
示例#2
0
    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])