Wie kann man einen AST manuell konstruieren?

Ich lerne gerade über das Parsen, aber ich bin ein bisschen verwirrt, wie man ein AST erzeugt. Ich habe einen Parser geschrieben, der korrekt überprüft, ob ein Ausdruck einer Grammatik entspricht (es ist still, wenn der Ausdruck übereinstimmt, und löst eine Ausnahme aus, wenn dies nicht der Fall ist). Wohin gehe ich von hier aus, um einen AST zu bauen? Ich habe viele Informationen zum Erstellen meines LL (1) -Parsers gefunden, aber nur sehr wenige zum Erstellen des AST.

Mein aktueller Code (geschrieben in sehr einfachem Ruby, einschließlich eines Lexers und eines Parsers) ist hier auf Github zu finden:https://gist.github.com/e9d4081b7d3409e30a57

Kann mir jemand erklären, wie ich von dem, was ich gerade habe, zu einem AST übergehe?

Wenn Sie mit Ruby nicht vertraut sind, aber C kennen, können Sie mir auch sagen, wie ich einen AST für den C - Code in derrekursive Abstiegsanalyse Wikipedia-Artikel.

Bitte beachten Sie, dass ich keinen Parser-Generator wie yacc oder antlr verwenden möchte, um die Arbeit für mich zu erledigen. Ich möchte alles von Grund auf neu machen.

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage