Контекст для парсера

Для удобства перемещения по списку токенов и редактирования синтаксического дерева каждая из функций-парсеров принимает контекст – ссылку на объект специальной вспомогательной структуры в качестве аргумента. Эта структура называется ParserContext, и содержательная часть ее объявления выглядит следующим образом:

struct ParserContext {
    Node::Ptr node;
    TokenList::iterator tokenIter;
    TokenList::iterator tokenEnd;
    int nestingLevel;
};

Таким образом, эта структура должна хранить в себе:

  • указатель на текущий узел дерева;

  • указатель (итератор) на текущий просматриваемый токен;

  • указатель (итератор) на последний токен в списке – для того, чтобы ограничить перемещение по списку его концом;

  • значение уровня вложенности текущего блока кода.

Назад