Напишите LEX-программу для подсчета количества календарных дат в текстовом файле. - C (СИ)
Формулировка задачи:
Здравствуйте. Очень нужна помощь в написании лекс-программы для С.
Задание:Напишите LEX-программу для подсчета количества календарных дат в текстовом файле.
Спасибо за внимание.
Решение задачи: «Напишите LEX-программу для подсчета количества календарных дат в текстовом файле.»
textual
Листинг программы
%{
#include <stdio.h>
static int ndates = 0;
%}
%%
/* DD-MM-YYYY and DD/MM/YYYY */
(0[1-9]|[12][0-9]|3[01])[\-/ ](0[1-9]|1[012])[\-/ ](19|20)[0-9][0-9] {
printf("found date: \"%s\".\n", yytext);
ndates++;
}
.|\n {}
%%
int main(void)
{
yylex();
printf("ndates=%d\n", ndates);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки файлов C.
- Объявление статической переменной
ndatesтипаint, которая будет использоваться для подсчета количества найденных дат. - Определение правил для работы с датами в формате DD-MM-YYYY и DD/MM/YYYY.
- Увеличение счётчика
ndatesна единицу при каждой встрече с датой. - Вывод количества найденных дат на экран.
- Ввод исходных данных в стандартный ввод (обычно с клавиатуры).
- Запуск лексического анализатора (сканера) для разбора введённых данных.
- Вывод результата работы программы (количество найденных дат).
- Возврат нуля для успешного завершения программы.