Контекст для парсера
Для удобства перемещения по списку токенов и редактирования синтаксического дерева каждая из функций-парсеров принимает контекст – ссылку на объект специальной вспомогательной структуры в качестве аргумента. Эта структура называется ParserContext
, и содержательная часть ее объявления выглядит следующим образом:
struct ParserContext {
Node::Ptr node;
TokenList::iterator tokenIter;
TokenList::iterator tokenEnd;
int nestingLevel;
};
Таким образом, эта структура должна хранить в себе:
указатель на текущий узел дерева;
указатель (итератор) на текущий просматриваемый токен;
указатель (итератор) на последний токен в списке – для того, чтобы ограничить перемещение по списку его концом;
значение уровня вложенности текущего блока кода.