В чём разница между парсером и лексером?
Если я описал синтаксис языка программирования с помощью yacc-подобной утилиты, то это парсер или лексер?
Как строго определяются эти термины?
Источник: Stack Overflow на русском
Если я описал синтаксис языка программирования с помощью yacc-подобной утилиты, то это парсер или лексер?
Как строго определяются эти термины?
Разница между этими понятиями очень точная. Лексер распознает лексемы (токены). Например, если мы анализируем запись какого-то выражения, то отдельными токенами будут числа и знаки операций. На этом работа лексера заканчивается. Парсер же на основе списка токенов выполняет синтаксический анализ и далее уже строит какую-то модель на основании токенов, например, может построить дерево вычисления выражения.