Генерация кода для компилятора в Haskell

Я пишу компилятор для небольшого императивного языка. Целевым языком является байт-код Java, а компилятор реализован на Haskell.

Я написал интерфейс для этого языка, т.е. у меня есть лексер, синтаксический анализатор и проверка типов. Мне сложно понять, как создавать код.

Я храню структуру данных, представляющую стек локальных переменных. Я могу запросить эту структуру по имени локальной переменной и получить ее позицию в стеке. Эта структура данных передается, когда я прохожу по синтаксическому дереву, а переменные извлекаются и выталкиваются, когда я вхожу в новые области видимости и выхожу из них.

У меня возникли проблемы с тем, чтобы понять, как испустить байт-код. Вывод строк на терминалах и объединение их на более высоких уровнях кажется плохим решением как с точки зрения ясности, так и с точки зрения производительности.

tl; dr Как мне передать байт-код при обходе синтаксического дерева?

5
задан C. A. McCann 9 June 2011 в 21:36
поделиться