Я пишу генератор лексического анализатора на основе регулярных выражений, основанный на алгоритме прямого перевода регулярного выражения в DFA, описанном в Книге Дракона.
Он вычисляет функции nullable
, firstpos
, lastpos
и followpos
для конкатенации, чередования и узлов клини-звезды. Я хочу добавить квантификаторы для +
(один или несколько раз) и ?
(ноль или один раз).
nullable
, firstpos
и lastpos
легко вычислить, но я не уверен насчет followpos
. Не лучше ли реализовать эти квантификаторы как часть этапа синтаксического анализа, а вместо этого переписать его на этапе лексического анализа (я думаю, что это всего лишь «синтаксический сахар» для клини-звезды и чередования)?