To, czego naprawdę chcesz, to program transformation system, które odwzorowuje struktury składni w jednym języku (twoje DSL) na wzorce składni w innych językach. Takie narzędzie może przeprowadzać dowolne transformacje (przepisywanie drzew generalizują napisy, które są systemami Post, które są w pełni Turinga) podczas projektu generowania kodu, co oznacza, że to, co generujesz i jak wyrafinowany proces generowania jest określony tylko twoją ambicją , a nie przez właściwości "generatora kodu".
Zaawansowane systemy transformacji programów łączą różne typy analizy zakresu, analizy przepływu i/lub niestandardowe analizatory, aby umożliwić transformacje. Nie dodaje to żadnej teoretycznej mocy, ale dodaje wiele praktycznej mocy: większość rzeczywistych języków (nawet DSL) ma przestrzenie nazw, sterowanie i przepływ danych, potrzebne wnioskowanie typu itp. Itp.
Nasz DMS Software Reengineering Toolkit jest tym typem systemu transformacji. Został wykorzystany do analizy/transformacji zarówno języków konwencjonalnych, jak i DSL, dla prostych i złożonych języków oraz dla małych, dużych, a nawet ogromnych systemów oprogramowania.
Związane z komentarzami OP o numerach "turning the AST into other languages", that is accomplished by DMS by writing transformations that map surface syntax for the DSL (implemented behind the scenes his DSL's AST) to surface syntax for the target language (zaimplementowanymi przy użyciu języków docelowych w języku docelowym). Wynikowy język docelowy AST jest następnie automatycznie drukowany przez DMS w celu zapewnienia rzeczywistego kodu źródłowego w języku docelowym, który odpowiada docelowemu AST.
Może to tylko dlatego, że zapytałeś o to dawno temu. Ale na dzień dzisiejszy (2013) ANTLR (który wydaje się być używany) ma wbudowane szablony ciągów. –