Изменения
→Общая схема построения парсеров с помощью FIRST и FOLLOW
Здесь Node {{---}} структура вида:
Node
children : list<Node>// список детей данного узла value : string// терминал или не терминал, записанный в данном узле дерева addChild(Node) // функция, подвешивающая поддерево к данному узлу
Тут картинка про строку.
Токен {{---}} один или несколько нетерминалов, для удобства объединяемые по смыслу в одну логическую единицу.
curToken {{---}} текущий токен строки.
nextToken {{---}} следующий за ним токен.
A() : Node
error("expected" + c)
nextToken()
Такой парсер не только разбирает строку, но и находит ошибки в неудовлетворяющих грамматике выражениях.
== Пример ==