Реализация поддержки «Генератор» на пользовательском языке
У меня есть немного фетиша для языкового дизайна, и я в настоящее время играю со своим собственным языком хобби. (http://rogeralsing.com/2010/04/14/playing-with-plastic/)
Одна вещь, которая действительно заставляет меня кровоточить, это "генераторы" и ключевое слово "yield". Я знаю, что C # использует преобразование AST для преобразования методов перечислителя в машины состояний.
Но как это работает на других языках? Есть ли способ получить поддержку генератора в языке без преобразования AST? например Языки как Python или Ruby прибегают к преобразованиям AST, чтобы решить эту проблему?
(Вопрос в том, как генераторы реализованы под капотом на разных языках, а не в том, как написать генератор на одном из них)