MCPcopy
hub / github.com/fluentpython/example-code-2e / read

Function read

18-with-match/lispy/original/lispy.py:61–76  ·  view source on GitHub ↗

Read a Scheme expression from an input port.

(inport)

Source from the content-addressed store, hash-verified

59 return inport.file.read(1) or eof_object
60
61def read(inport):
62 "Read a Scheme expression from an input port."
63 def read_ahead(token):
64 if '(' == token:
65 L = []
66 while True:
67 token = inport.next_token()
68 if token == ')': return L
69 else: L.append(read_ahead(token))
70 elif ')' == token: raise SyntaxError('unexpected )')
71 elif token in quotes: return [quotes[token], read(inport)]
72 elif token is eof_object: raise SyntaxError('unexpected EOF in list')
73 else: return atom(token)
74 # body of read:
75 token1 = inport.next_token()
76 return eof_object if token1 is eof_object else read_ahead(token1)
77
78quotes = {"'":_quote, "`":_quasiquote, ",":_unquote, ",@":_unquotesplicing}
79

Callers 6

parseFunction · 0.85
read_aheadFunction · 0.85
_iter_bodyMethod · 0.85
_iter_chunkedMethod · 0.85
__iter__Method · 0.85
_copy_fileMethod · 0.85

Calls 2

read_aheadFunction · 0.85
next_tokenMethod · 0.80

Tested by

no test coverage detected