Unterstützung von "Generator" in einer benutzerdefinierten Sprache implementieren

Ich habe ein bisschen Fettish für das Sprachdesign und spiele gerade mit meiner eigenen Hobbysprache herum. http: //rogeralsing.com/2010/04/14/playing-with-plastic)

Eine Sache, die meinen Verstand wirklich zum Bluten bringt, sind "Generatoren" und das Schlüsselwort "yield". Ich weiß, dass C # die AST-Transformation verwendet, um Enumerator-Methoden in Statemachines umzuwandeln.

Aber wie funktioniert es in anderen Sprachen? Gibt es eine Möglichkeit, Generatorunterstützung in einer Sprache ohne AST-Umwandlung zu erhalten? z.B. Greifen Sprachen wie Python oder Ruby auf AST-Transformationen zurück, um dieses Problem zu lösen?

(Die Frage ist, wie Generatoren unter der Haube in verschiedenen Sprachen implementiert werden, nicht wie man einen Generator in eine von ihnen schreibt)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage