I'm getting some surprising errors when I try to input a string using (read)
. Context: I'm building a mini language, with inputs deliminated using characters like {, }, :, etc.
Here's what happens, I run (read)
and enter {9.I:{8.II:hello}{8.III:hi}}
(an example input string from my mini language).
I then get 2 errors:
1:
too many colons in "{8.II"
2:
Package HELLO}{8.III does not exist.
It seems as though there's something extra going on in the (read)
function that's tripping me up. Can someone point me in the right direction?
read
is designed to read a valid Lisp S-expression. It's going to use Common Lisp's parser. If your language is sufficiently Lisp-like, you may be able to make it work for you, but given the example input you've shown, I doubt it's what you want.
You're probably looking for read-line
, which reads a single line of text as a string and does not perform any additional parsing on it.