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))
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))
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))
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))
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)
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)
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()
def test_comment(self): stream = io.StringIO(" ;hello\n") result = self.reader(stream).read(stream) self.assertTrue(base.eofp(result))
def test_whitespace(self): stream = io.StringIO("\t \n") result = self.reader(stream).read(stream) self.assertTrue(base.eofp(result))
def test_empty(self): stream = io.StringIO("") result = self.reader(stream).read(stream) self.assertTrue(base.eofp(result))