Как создать AST вручную?

В настоящее время я изучаю синтаксический анализ, но немного не понимаю, как генерировать AST. Я написал синтаксический анализатор, который правильно проверяет, соответствует ли выражение грамматике (он молчит, когда выражение соответствует, и вызывает исключение, когда это не так). Куда мне идти отсюда, чтобы построить AST? Я нашел много информации о построении моего LL (1) синтаксический анализатор, но очень мало работы по сборке AST.

Мой текущий код (написанный на очень простом Ruby и включающий лексер и парсер) можно найти здесь на github: https:/ /gist.github.com/e9d4081b7d3409e30a57

Может ли кто-нибудь объяснить, как мне перейти от того, что у меня есть в настоящее время, к AST?

В качестве альтернативы, если вы не знакомы с Ruby, но знаете C, не могли бы вы рассказать мне, как я создаю AST для кода C в рекурсивном разборе спускав википедии.

Обратите внимание, я не хочу использовать генератор синтаксических анализаторов, такой как yacc или antlr, чтобы сделать всю работу за меня, я хочу сделать все с нуля.

Спасибо!

8
задан Charles 23 April 2012 в 07:54
поделиться