我使用迭代器已经有一段时间了,我喜欢它们。
但是,尽管我仔细考虑过,但我无法弄清楚“如何实现识别迭代器的编译器”。我也对此进行了研究,但找不到任何资源来解释编译器设计上下文中的情况。
详细地说,大多数关于迭代器的文章都暗示有某种“魔法”来实现所需的行为。他们建议编译器维护一个状态机,以便跟踪执行的位置(看到最后一个“收益返回”的位置)。我对启用惰性求值的迭代器的这个属性特别感兴趣。
顺便说一句,我知道什么是状态机,已经上过编译器设计课程,研究过龙之书。但显然,我无法将我所研究的内容与 csc 的“魔法”联系起来。
任何知识或不同的想法都会受到赞赏。