ускає роботу інших компонентів програми, відповідальних за обробку вхідних даних. Аналізатор приймає або відкидає пропозиції мови і в процесі своєї роботи передає інформацію про вжиті пропозиціях в інші компоненти програмної системи, такі, наприклад, як будівник внутрішнього подання даних. Таким чином, входом для синтаксичного аналізатора є ланцюжки символів вхідного мови, а вихідними даними є закінчені пропозиції того ж мови, які, у свою чергу, можуть нести певний логічний зміст, доступний інших компонентів програмної системи. p align="justify"> Виділення синтаксичного аналізу в окрему задачу дозволяє застосувати формальні методи теорії мов і спростити його реалізацію шляхом використання існуючого програмного коду.
2. Постановка завдання
Розробити програмний продукт для обробки даних строкового типу.
У розробку програмного продукту входять:
побудова сканера текстів з використанням утиліти flex;
- побудова синтаксичного аналізатора з використанням утиліти bison.
Система програмування повинна друкувати таблицю зіставлення DN (Directory Numbers) іменам користувача (NAME). В якості оброблюваного файлу система повинна приймає файли відповідні вказаному прикладу. p align="justify"> Приклад оброблюваного файлу:
DN 1002
CPND
NAME BRIAN WALSH
XPLN 27_FMT FIRST, LAST_COS 4_DN_DN_STATE CONFIGUREDSL1004 0 00 02 KEY 00 H MARP DES BRIAN 1 JUN 2001
(2008)
Після обробки заданого файлу на виході система повинна видавати таблицю відповідності номерів іменам користувачів по наступним шаблоном:
DN First name Last name
=================================
1002 BRIAN WALSH
------------------------------------------ ------------
. Граматика мови програмування обробки рядків
Для завдання синтаксичного аналізатора створюється спеціальний текстовий файл, який згодом обробляється утилітою bison для побудови вихідного програмного коду.
Файл включає в себе 4 секції: Визначення, Налаштування bison, Правила і для користувача код (послуга є обов'язкова секція). Для поділу секцій використовується рядок з символами%%
Опис використовуваного синтаксичного аналізатора:
% {
# include
# include
int yylex (); yyerror (char const * msg);
%}
% union
{* string;
}
<...