Zadajesz tutaj wiele niepowiązanych pytań. W zależności od zdefiniowanego języka może istnieć węzeł metody w twoim języku lub nie będzie żadnego, powiedzmy, jeśli twój język będzie kompilował się bezwarunkowo z metodą main(String[])
.
Istnieje wiele metod przekształcania AST w język docelowy. Zwykle nie generowałbyś kodu bezpośrednio, ale generowałbyś AST dla swojej docelowej platformy i miałeś ładną drukarkę generującą z niego kod, używając Treewalkera.
Analiza semantyczna to programowanie kompilatora. Odczyt i zrozumienie danych wejściowych na poziomie składniowym jest analizą. Będziesz musiał napisać analizator semantyczny samodzielnie lub nie napisałbyś w ogóle kompilatora. ;-)
Zakładam, że używasz Jasmin do kompilacji kodu zespołu? Bardzo dobrym początkiem byłoby pisanie gramatyk dla języka wejściowego i języka docelowego (Jasmin) i zastanowienie się, które struktury wejściowe renderowałyby wynik. Jak napisać pętlę for i := 1 to 10
w Jasmin? Rozwiązuj małe problemy i rozszerzaj swój kompilator w razie potrzeby, ale powoli, wcześnie i dokładnie testuj nowo wdrożone transformacje.
A bardzo dobre czytanie: Let's Build a Compiler, by Jack Crenshaw.
Wielkie dzięki, otrzymałem prawie taką samą odpowiedź od [stephen brin] (http://steveonjava.com/) niedawno, Zbudujmy kompilator, przez Jacka Crenshawa wydaje się bardzo dobry, zacznę go czytać. – Gautam