Jak ręcznie skonstruować AST?

Obecnie uczę się parsowania, ale jestem trochę zdezorientowany, jak wygenerować AST. Napisałem parser, który poprawnie sprawdza, czy wyrażenia są zgodne z gramatyką (milczy, gdy wyrażenie jest zgodne i wywołuje wyjątek, gdy nie jest). Gdzie mam się udać, aby zbudować AST? Znalazłem wiele informacji na temat budowania mojego parsera LL (1), ale bardzo niewiele później budowałem AST.

Mój obecny kod (napisany w bardzo prostym języku Ruby, zawierający lexer i parser) znajduje się tutaj na github:https://gist.github.com/e9d4081b7d3409e30a57

Czy ktoś może wyjaśnić, w jaki sposób przechodzę od tego, co mam obecnie do AST?

Alternatywnie, jeśli nie jesteś zaznajomiony z Ruby, ale znasz C, czy mógłbyś mi powiedzieć, jak buduję AST dla kodu C wparsowanie rekurencyjne zejścia artykuł wikipedii.

Pamiętaj, że nie chcę używać generatora parsera, takiego jak yacc lub antlr, do wykonywania pracy za mnie, chcę robić wszystko od zera.

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion