如何解决使用从字符串读取时如何处理文件结尾错误?
我正在尝试使用功能read-from-string,但是我不能用它来得起。
如果我正确理解文档,如果第二个参数不为true,则提供的字符串中不平衡的表达式不应导致错误。但是,如果尝试一下,我会得到:
>(从字符串“(1 2” t'EOF)读取
类型的条件:END-OF-FILE意外的文件结尾 # ..
可用重新启动:
- (重新开始)返回顶级REPL。
在SI:BYTECODES处损坏。 [评估:(读字符串“(1 2” ...)] 在:#。
>> 1
1
>>(从字符串“(1 2” nil'EOF)读取
调试器收到以下类型的错误:END-OF-FILE文件意外结束于 #的字符串输入流。刷新错误。
无论我发送什么,我总是会出错。
我正在使用ECL 15.3.7
解决方法
eof-error-p
和eof-value
可选参数控制着在找到任何东西之前碰到字符串末尾的结果。所以:
> (read-from-string "")
Error: ...
同时
> (read-from-string "" nil 'foo)
foo
0
如果字符串的结尾部分出现在不完整的对象中,则总是会提示错误。规格很明确,尽管它离条目很远:
如果提供的子字符串的末尾出现在可以读取对象之前,则如果eof-error-p为true,则将指示错误。如果子字符串的末尾出现在不完整的对象中间,则表示发生错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。