私はイテレーターをしばらく使用しており、私はそれらを愛しています。イテレータを認識するコンパイラはどのように実装できますか?
しかし、私はそれについて懸念していましたが、「イテレータを認識するコンパイラがどのように実装されるか」を理解できませんでした。私はそれについても研究しましたが、コンパイラ設計の状況を説明するリソースは見つかりませんでした。
説明すると、反復子に関する記事のほとんどは、希望の動作を実装する何らかの「魔法」があることを暗示しています。彼らは、コンパイラが、実行がどこにあるかに従うためにステートマシンを維持することを提案しています(最後の「利回り」が見られる場所)。私は怠惰な評価を可能にするイテレータのこのプロパティに特に興味があります。
ところで、私はどのような状態マシンが、コンパイラデザインコースを取って、ドラゴンブックを学んだのか知っています。しかし、明らかに、私が学んだことをcscの「魔法」に関連付けることはできません。
あらゆる知識や差別化された考えが認められます。
もう少し説明できますか?たとえば、コンパイラが認識するのが非常に難しいと思うソースコードの例がありますか? – Thilo
また、あなたが話している言語 - たとえば「yeild」は何ですか? –
C#には "yield returns"構文があります。 –