Ich benutze Iteratoren seit einer Weile und ich liebe sie.Wie kann ein Compiler, der die Iteratoren erkennt, implementiert werden?
Aber obwohl ich darüber nachgedacht habe, konnte ich nicht herausfinden, "wie ein Compiler, der die Iteratoren erkennt" implementiert wird. Ich habe auch darüber recherchiert, konnte aber keine Ressource finden, die die Situation im Compiler-Design-Kontext erklärt.
Um es auszuarbeiten, die meisten Artikel über Iteratoren implizieren, dass es eine Art von "Magie" gibt, die das gewünschte Verhalten implementiert. Sie schlagen vor, dass der Compiler eine Zustandsmaschine beibehält, um zu verfolgen, wo die Ausführung ist (wo die letzte "Ertragsrendite" gesehen wird). Ich interessiere mich besonders für diese Eigenschaft von Iteratoren, die die faule Auswertung ermöglicht.
Übrigens, ich weiß, was State Machines sind, haben bereits einen Compiler-Design-Kurs genommen, studierte das Dragon Book. Aber anscheinend kann ich das, was ich studiert habe, nicht mit der "Magie" von CSC in Verbindung bringen.
Jedes Wissen oder unterschiedliche Gedanken werden geschätzt.
Können Sie das ein wenig mehr erklären? Zum Beispiel mit einem Quellcode-Beispiel, von dem Sie glauben, dass es für einen Compiler sehr schwierig ist, es zu erkennen? – Thilo
und welche Sprache sprichst du? Was macht zum Beispiel "yeild"? –
C# hat eine "yield return" -Syntax. –