Многие практические приложения лексического анализа являются частными разновидностями общей проблемы поиска совпадений для фрагмента входного текста, ограниченного (или разделяемого) известными символьными элементами. Одним из наиболее популярных приложений в данной проблематике является лексический анализ комментариев в исходных текстах программ на различных алгоритмических языках высокого уровня.
Лексическая обработка комментариев может производиться с различными целями. Например, исключение комментариев из исходного кода программы, выделение комментирующего текста, оценка степени "комментированности" программы. Ниже приводится пример файла спецификации лексем для лексического анализатора, который измеряет общую длину комментирующего текста без учета пробелов, табуляций и переводов строк в исходном коде программы на языке Pascal:

%Start ISCOM
OPENCOM   "(*"
CLOSECOM  "*)"
%{
#include <stdio.h>
extern int comcount;
int comcount = 0;
%}
%%
{OPENCOM}           BEGIN ISCOM;
<ISCOM>[^*\t \n]+   comcount += yyleng;
<ISCOM>\*/[^)]      comcount++;
{CLOSECOM}          BEGIN 0;
.                   |
\n                  ;
%%
int yywrap() {
printf("(* %d *)\n", comcount);
return(1);
} /* yywrap */

В языке программирования Pascal комментарии ограничивают символьные пары (* и *), которые идентифицируют, соответственно, начало и конец комментария. Для их обозначения в файле спецификации лексем введены регулярные определения OPENCOM и CLOSECOM, которые заданы в секции описаний. Кроме того, в секции описаний директивой %Start декларируется метка предусловия ISCOM, которая обозначает состояние лексического анализатора при разборе входного текста внутри комментария, а также введен блок описаний для подключения заголовочного файла <stdio.h> из системы программирования C и определения внешней целочисленной переменной comcount, инициализированной нулевым значением.
Перечисленные инструкции секции описаний имеют вспомогательный характер и введены для использования в секции правил, где лексический анализ комментариев осуществляется по следующей схеме: найти открывающий ограничитель комментария, отобразить текст внутри комментария, найти закрывающий ограничитель комментария. В соответствии с этой схемой первое правило с регулярным определением OPENCOM необходимо, чтобы обнаружить открывающий ограничитель комментария и установить метку предусловия ISCOM оператором BEGIN. После этого становятся активны два следующих правила с предусловием ISCOM, действия которых соответствующим образом увеличивают значение счетчика комментариев, заданного внешней переменной comcount. При этом одно из указанных правил обеспечивает обработку любой последовательности символов без пробелов, табуляций и перевода строки до символа '*', который может быть началом закрывающего ограничителя комментария. Другое правило позволяет учитывать символы '*' внутри комментария. Обработку комментария завершает правило с регулярным определением CLOSECOM, которое сбрасывает метку предусловия ISCOM оператором BEGIN с нулевым аргументом. Последнее альтернативное правило с пустым действием позволяет игнорировать все символы вне комментариев, а также разделители внутри них.
Файл спецификации лексем завершает секция подпрограмм, которая в данном случае используется для перегрузки стандартной функции yywrap, которая автоматически вызывается в конце лексического анализа входного потока. Перегрузка выполняется с целью обеспечить отображение через поток стандартного вывода результирующего значения суммарной длины комментариев, которое сохраняет внешняя переменная comcount. Для этого используется библиотечная функция printf системы программирования C. Аналогично стандартному варианту перегруженная функция yywrap возвращает код 1, чтобы идентифицировать корректное завершение процедуры лексического анализа.
Рассмотренный файл спецификации лексем может быть подготовлен текстовым редактором и сохранен, например, под именем compas.l в любом доступном каталоге файловой системы. Построение файла исходного кода лексического анализатора, например, под именем compas.c обеспечивает следующая командная строка вызова генератора LEX:

$ lex -t compas.l > compas.c

Исполняемый модуль лексического анализатора, например, в файле compas образуется по исходному тексту при следующем обращении к компилирующей системе языка программирования C:

$ cc -o compas compas.c -ll

Следует отметить, что в данном случае для компоновки стандартного объектного кода основной функции main необходимо подключить библиотеку объектных модулей libl.a (или разделяемый объект libl.so) генератора LEX, что указано последним аргументом (-ll) этой командной строки.
Полученный исполняемый файл compas ориентирован на обработку стандартного ввода, поэтому его непосредственный вызов мало полезен, так как обычно требуется лексический анализ комментариев в программе, исходный текст которой сосредоточен в файле. Требуемую лексическую обработку комментариев, например, в файле foo.pas обеспечивает следующий конвейер команд:

$ cat foo.pas | compas

После завершения лексического анализа файла foo.pas общая длина его комментариев будет отображена в потоке стандартного вывода соответствующим целым числом, которое обрамляют ограничители комментариев языка программирования Pascal.
В заключение следует отметить, что к классу рассмотренного примера относятся, в частности, следующие лексические задачи: поиск тегов языка HTML или текста между одноименными тегами, обработка текста в кавычках или апострофах, распознавание IP адресов или доменных имен сети Internet, которые могут быть решены аналогичным образом.