Example #1
0
 def test_peek_read_eof(self):
     port = ports.TextStreamPort.from_stream(io.StringIO("abcdefg"))
     port.read()
     result1 = port.peek_char()
     result2 = port.read()
     self.assertTrue(base.eofp(result1))
     self.assertTrue(base.eofp(result2))
Example #2
0
 def test_peek_readline_peek_eof(self):
     port = ports.TextStreamPort.from_stream(io.StringIO("\nabc\ndef\ngh"))
     port.read()
     result1 = port.peek_char()
     result2 = port.readline()
     result3 = port.peek_char()
     self.assertTrue(base.eofp(result1))
     self.assertTrue(base.eofp(result2))
     self.assertTrue(base.eofp(result3))
Example #3
0
 def test_read(self):
     port = ports.TextStreamPort.from_stream(io.StringIO("abcdefgh"))
     result1 = port.read(3)
     result2 = port.read()
     result3 = port.read()
     self.assertEqual(result1, "abc")
     self.assertEqual(result2, "defgh")
     self.assertTrue(base.eofp(result3))
Example #4
0
 def test_readline(self):
     port = ports.TextStreamPort.from_stream(io.StringIO("abc\n\ndef"))
     result1 = port.readline()
     result2 = port.readline()
     result3 = port.readline()
     result4 = port.readline()
     self.assertEqual(result1, "abc\n")
     self.assertEqual(result2, "\n")
     self.assertEqual(result3, "def")
     self.assertTrue(base.eofp(result4))
Example #5
0
 def eval_stream(self, in_stream, env=None):
     stream_reader = reader.Reader(in_stream,
                                   symbol_table=self.symbol_table,
                                   keyword_table=self.keyword_table)
     if env is None:
         env = self.global_env
     result = False
     while True:
         expr = stream_reader.read(in_stream)
         if base.eofp(expr):
             return result
         result = eval.eval(expr, env=env, hooks=self.hooks)
Example #6
0
def eval_str(str_, str_bindings):
    symbol_table = types.symbol_table()
    keyword_table = types.keyword_table()
    env = str_bindings_to_env(str_bindings, symbol_table=symbol_table)
    reader_ = reader.Reader(io.StringIO(str_),
                            symbol_table=symbol_table,
                            keyword_table=keyword_table)
    in_stream = io.StringIO(str_)
    result = False
    while True:
        expr = reader_.read(in_stream)
        if base.eofp(expr):
            return result
        result = eval.eval(expr, env=env)
Example #7
0
def repl(interpreter):
    interpreter.stdout.write(INTRO)
    interpreter.stdout.flush_output()
    reader = interpreter.reader(sys.stdin)
    while True:
        interpreter.stdout.write(PROMPT)
        interpreter.stdout.flush_output()

        try:
            expr = reader.read()
        except exceptions.ReaderError as e:
            interpreter.stdout.write("Error reading expression:\n")
            interpreter.stdout.write(str(e))
            interpreter.stdout.newline()
            continue

        if base.eofp(expr):
            interpreter.stdout.newline()
            return

        try:
            result = eval.eval(expr, env=interpreter.global_env)
        except exceptions.EvalError as e:
            interpreter.stdout.write("Error evaluating expression:\n")
            interpreter.stdout.write(str(e))
            interpreter.stdout.newline()
            continue
        except Exception as e:
            interpreter.stdout.write("Got exception:\n")
            interpreter.stdout.write(str(e))
            interpreter.stdout.newline()
            continue

        interpreter.stdout.newline()
        write.write_to(result, interpreter.stdout)
        interpreter.stdout.newline()
Example #8
0
 def test_comment(self):
     stream = io.StringIO(" ;hello\n")
     result = self.reader(stream).read(stream)
     self.assertTrue(base.eofp(result))
Example #9
0
 def test_whitespace(self):
     stream = io.StringIO("\t \n")
     result = self.reader(stream).read(stream)
     self.assertTrue(base.eofp(result))
Example #10
0
 def test_empty(self):
     stream = io.StringIO("")
     result = self.reader(stream).read(stream)
     self.assertTrue(base.eofp(result))