Implementación de soporte "Generador" en un lenguaje personalizado

Tengo un poco de fetiche por el diseño del lenguaje y actualmente estoy jugando con mi propio lenguaje de hobby. (http://rogeralsing.com/2010/04/14/playing-with-plastic/)

Una cosa que realmente me hace sangrar la mente es "generadores" y la palabra clave "rendimiento". Sé que C # usa la transformación AST para transformar los métodos de enumerador en máquinas de estado.

Pero, ¿cómo funciona en otros idiomas? ¿Hay alguna forma de obtener soporte de generador en un lenguaje sin transformación AST? p.ej. ¿Los lenguajes como Python o Ruby recurren a transformaciones AST para resolver esto?

(La pregunta es cómo se implementan los generadores bajo el capó en diferentes idiomas, no cómo escribir un generador en uno de ellos)

Respuestas a la pregunta(1)

Su respuesta a la pregunta