Also eines der Standardwerke in dem Bereich ist das "Dragon Book", so benannt wegen des Bildes auf dem Umschlag, von dem dieses Jahr gerade eine aktualisierte Auflage herausgekommen ist. Korrekter Titel ist "Compilers -- Principles, Techniques, and Tools" von Aho, Alfred V. / Lam, Monica S. / Ullman, Jeffrey D.
Ist zwar Fachliteratur, aber bei englischer Fachliteratur legen die Autoren meistens Wert auf Verständlichkeit. Bei deutschen Autoren habe ich manchmal das Gefühl die wollen damit angeben, dass sie etwas möglichst knapp, formal und schwerverständlich formulieren können.
Das Buch ist aber sehr umfangreich und nicht gerade billig. Lohnt sich wahrscheinlich nicht wenn man nicht wirklich einen Compiler schreiben möchte oder Informatik studiert.
Grundsätzlich bekommt man einen AST aus einem Stück Quelltext indem man es "parst". Dazu braucht man eine Grammatik, welche die Sprache beschreibt und einen Parser der diese Grammatik erkennt. Der kann dann aus einem Quelltext einen AST aufbauen.
Das Thema ist dann aber ein bisschen zu komplex um es mal eben hier zu erklären würde ich sagen. Einfacher wird es, wenn man einen Parser-Generator benutzt, dem man eine Grammatik gibt und der entsprechenden Code generiert um Quelltext nach dieser Grammatik zu parsen. Bei Python finde ich `PyParsing` am nettesten, da baut man die Grammatik aus Objekten zusammen. `yapps2` erzeugt für Menschen "lesbaren" Quelltext, erkennt aber nur eine bestimmte Klasse von Sprachen. Für C hat mir `lemon` bisher am besten gefallen.