¿Cómo construir manualmente un AST?

Actualmente estoy aprendiendo sobre el análisis, pero estoy un poco confundido sobre cómo generar un AST. He escrito un analizador que verifica correctamente si una expresión se ajusta a una gramática (es silenciosa cuando la expresión se ajusta y genera una excepción cuando no lo está). ¿A dónde voy desde aquí para construir un AST? Encontré mucha información sobre cómo compilar mi analizador LL (1), pero muy poco para luego construir el AST.

Mi código actual (escrito en Ruby muy simple, e incluyendo un lexer y un analizador) se encuentra aquí en github:https://gist.github.com/e9d4081b7d3409e30a57

¿Alguien puede explicar cómo voy de lo que tengo actualmente a un AST?

Alternativamente, si no está familiarizado con Ruby, pero sabe C, ¿podría decirme cómo construyo un AST para el código C en elanálisis de descenso recursivo Artículo de wikipedia.

Tenga en cuenta que no quiero usar un generador de analizador como yacc o antlr para hacer el trabajo por mí, quiero hacer todo desde cero.

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta