Нужно ли рекурсивному синтаксическому анализатору с прогнозирующим спуском создавать полное синтаксическое дерево и сохранять в памяти?

#parsing #recursion #abstract-syntax-tree #recursive-descent #parse-recdescent

#синтаксический анализ #рекурсия #абстрактное синтаксическое дерево #рекурсивный спуск #синтаксический анализ-recdescent

Вопрос:

Я тут подумал, и возник вопрос. Действительно ли компилятору этого типа нужно полное синтаксическое дерево в памяти?

Ответ №1:

Синтаксическому анализатору не нужно ничего хранить. Он может просто сообщить вам, является ли ввод допустимым или нет. Но обычно вы анализируете входные данные для какой-то цели, которая определяет, какую информацию (кроме простой достоверности) вам нужно извлечь.

Например, компилятору необходимо преобразовать входную программу в некоторый исполняемый формат. Можно преобразовать непосредственно в машинные инструкции (или в какое-то промежуточное представление), особенно если вы не очень заботитесь об оптимизации сгенерированного кода.

Не зная цели синтаксического анализа входных данных, невозможно сказать что-либо более конкретное.