Как вручную построить AST?
В настоящее время я изучаю синтаксический анализ, но я немного сбит с толку тем, как генерировать AST. Я написал синтаксический анализатор, который правильно проверяет, соответствует ли выражение грамматике (он молчит, когда выражение соответствует, и вызывает исключение, когда это не так). Куда мне идти отсюда, чтобы построить АСТ? Я нашел много информации о сборке моего LL (1) парсера, но очень мало потом собирал AST.
Мой текущий код (написанный на очень простом Ruby, включая лексер и парсер) находится здесь на github:https://gist.github.com/e9d4081b7d3409e30a57
Может кто-нибудь объяснить, как я иду от того, что у меня есть в настоящее время к AST?
В качестве альтернативы, если вы не знакомы с Ruby, но знаете C, не могли бы вы рассказать мне, как я строю AST для кода C ванализ рекурсивного спуска статья в википедии.
Пожалуйста, обратите внимание, я не хочу использовать генератор синтаксических анализаторов, таких как yacc или antlr, чтобы сделать работу за меня, я хочу сделать все с нуля.
Спасибо!