Common lisp 公共Lisp阅读器:定制实习生行为

Common lisp 公共Lisp阅读器:定制实习生行为,common-lisp,Common Lisp,我想截取read的行为,以便对符号的插入进行一些控制。例如,如果输入流中出现以前不需要的符号,我可能希望read抛出一个错误。或者,我想限制可以在其中插入新符号的包 有没有一种方法可以在不从头改写读者的情况下钩住实习过程 我同意其他阅读器实现。使用read本身并不是必须的。对于标准定义的阅读器,如果不跳过巨大的障碍,就无法做到这一点:您必须实现累积和解析标记(包括所有数字解析内容)的过程,然后提供适当的干预方式。标准告诉您应该能够做到这一点,但这需要大量的工作:我怀疑任何阅读器实现中的大多数都是

我想截取
read
的行为,以便对符号的插入进行一些控制。例如,如果输入流中出现以前不需要的符号,我可能希望read抛出一个错误。或者,我想限制可以在其中插入新符号的包

有没有一种方法可以在不从头改写读者的情况下钩住实习过程


我同意其他阅读器实现。使用
read
本身并不是必须的。

对于标准定义的阅读器,如果不跳过巨大的障碍,就无法做到这一点:您必须实现累积和解析标记(包括所有数字解析内容)的过程,然后提供适当的干预方式。标准告诉您应该能够做到这一点,但这需要大量的工作:我怀疑任何阅读器实现中的大多数都是这样的

当然,特定的实现可能提供了方便的点,您可以在其中进行干预

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

让我想起:,它为代码评估提供了一个替代读取器。非常受限制()。而且,这看起来不太安全,不需要实习符号。可能有兴趣。