Концепция используемого подхода

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

Поскольку структура языковых конструкций – а значит, и ожидаемый набор токенов для выявления каждой из них – однозначно определена, парсеры последовательно обращаются к токенам в списке и на основании их содержимого добавляют узлы в дерево. В процессе такого обхода могут возникать исключительные ситуации, когда действительный токен на некоторой позиции не соответствует ожидаемому. В таких случаях парсеры могут возбуждать ошибки, большинство из которых, тем не менее, являются восстановимыми – для этого может быть достаточно, например, перейти к токену, следующему за ошибочным, или к ближайшему токену, обозначающему конец текущей строки.

Назад