В чём разница между парсером и лексером?

Рейтинг: 5Ответов: 1Опубликовано: 24.03.2011

Если я описал синтаксис языка программирования с помощью yacc-подобной утилиты, то это парсер или лексер?

Как строго определяются эти термины?

Ответы

▲ 10Принят

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