微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Common Lisp 阅读器:自定义实习生行为

如何解决Common Lisp 阅读器:自定义实习生行为

我想拦截 read 的行为,以便对符号的插入进行一些控制。例如,我可能希望 read 在输入流中出现以前未插入的符号时抛出错误。或者,我可能想限制可以存放新符号的包。

有没有办法在不从头开始重写阅读器的情况下钩住实习过程?

我对替代阅读器的实现没意见。不必使用 read 本身。

解决方法

你不能不跳过标准定义的阅读器来做到这一点:你必须实现累积和解析令牌的过程(包括所有数字解析的东西),然后提供合适的干预方式.标准告诉你应该能够做到这一点,但需要做很多工作:我怀疑大多数读取器实现都是这样的。

当然,具体的实现可能会提供您可以干预的方便点。

另一种方法是使用便携式、可扩展的阅读器。至少有一件事可能是这样的:Eclector,而且很可能还有其他的。不幸的是,我对此一无所知。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。