В дополнение к случаям, упомянутым ниже, большинство компиляторов также обрабатывают комментарии в лексере. Таким образом, ошибки в комментариях (неправильно вложенные, не закрытые) также могут быть обнаружены здесь.
Другая проблема связана с пользовательскими типами данных, которые должны обрабатываться лексером и парсером. Рассмотрим следующий код:
typedef int myinteger;
myinteger x;
Во втором утверждении myinteger - это тип данных, и лексер должен возвращать myinteger как тип данных, а не как идентификатор. Обычно это делается путем перекрестной ссылки на потенциальный идентификатор со списком определенных пользователем типов данных, которые ранее были заполнены синтаксическим анализатором.
Третья проблема касается контекста токена. В контекстно-зависимом языке, таком как C ++, один и тот же токен (например, <) может иметь различное значение (меньше, чем начало параметра шаблона). Это также необходимо обрабатывать в сотрудничестве с анализатором, который может дать отзыв лексеру о его текущем состоянии. </p>