Implementando o Suporte “Gerador” em um Idioma Customizado

Eu tenho um pouco de fetiche pelo design de idiomas e atualmente estou brincando com meu próprio idioma de hobby. (http://rogeralsing.com/2010/04/14/playing-with-plastic/)

Uma coisa que realmente faz minha mente sangrar são "geradores" e a palavra-chave "yield". Eu sei que o C # usa a transformação AST para transformar métodos de enumerador em máquinas de estado.

Mas como isso funciona em outros idiomas? Existe alguma maneira de obter suporte de gerador em um idioma sem transformação AST? por exemplo. Linguagens como Python ou Ruby recorrem a transformações AST para resolver isso?

(A questão é como os geradores são implementados sob o capô em diferentes idiomas, e não como escrever um gerador em um deles)

questionAnswers(1)

yourAnswerToTheQuestion