Как правило, вы собираетесь анализировать код в какой-либо форме AST, это может быть более или менее формальной моделью. Итак, я думаю, что Кирк Волл понял, что его комментарий выше заключается в том, что когда вы анализируете язык, вы очень часто используете синтаксический анализатор для создания некоторой модели данных необработанного содержимого того, что вы читаете, обычно организованного в виде дерева , Таким образом, по этому определению AST трудно избежать, если вы не делаете очень простой переводчик.
Я часто использую ANTLR для разбора сложных языков, и в этом контексте есть немного более конкретное значение AST. ANTLR имеет удобный способ генерирования AST в грамматике синтаксического анализатора, используя довольно простые действия. Затем вы пишете, как правило, гораздо более простой синтаксический анализатор для этого AST, с которым вы можете работать как гораздо более простая версия языка, который вы обрабатываете. Является ли дополнительная работа по созданию двух синтаксических анализаторов чистым преимуществом, зависит от сложности языка и того, что вы планируете делать с ним после его анализа.
Хорошая книга на эту тему, на которую вы, возможно, захотите взглянуть, - «Шаблоны языковой реализации», автор Терренс Парр, автор ANTLR. Он обращается к этой теме довольно тщательно. Тем не менее, я не получал AST, пока не начал их использовать, так что (как обычно) - лучший способ их понять.