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)