Реализация поддержки «Генератор» на пользовательском языке

У меня есть немного фетиша для языкового дизайна, и я в настоящее время играю со своим собственным языком хобби. (http://rogeralsing.com/2010/04/14/playing-with-plastic/)

Одна вещь, которая действительно заставляет меня кровоточить, это "генераторы" и ключевое слово "yield". Я знаю, что C # использует преобразование AST для преобразования методов перечислителя в машины состояний.

Но как это работает на других языках? Есть ли способ получить поддержку генератора в языке без преобразования AST? например Языки как Python или Ruby прибегают к преобразованиям AST, чтобы решить эту проблему?

(Вопрос в том, как генераторы реализованы под капотом на разных языках, а не в том, как написать генератор на одном из них)

Ответы на вопрос(1)

Ваш ответ на вопрос