Реализовать программу рекурсивного спуска

Отменен
Заказ
176731
Раздел
Программирование
Предмет
C/C++
Антиплагиат
Не указан
Срок сдачи
30 Июн 2014 в 23:59
Цена
600 ₽
Блокировка
10 дней
Размещен
4 Апр 2014 в 23:17
Просмотров
1 050
Описание работы
Цель работы

Целью данной лабораторной работы является применение на практике алгоритма рекурсивного спуска на основе библиотеки обработки входной строки.

Инструменты

Для выполнения данной лабораторной работы Вам потребу-ется любой компилятор языка С, способный генерировать 32-раз-рядные программы для той ОС, с которой Вы работаете. Для ОС Windows рекомендуется использовать бесплатную среду разра-ботки Microsoft Visual C++ Express.
Основная Ваша работа будет заключаться в формировании программы перевода выражения в постфиксную запись, которая была разобрана на лекции. Для первичной обработки строк пред-лагается использовать модуль match.

Процедура рекурсивного спуска
prim()
{
int s;
if (match("(")) {
if (expr()==0) return 0;
if (!match(")")) { cerror(ERIGHTBRACKET); return 0; }
}
else if (a=numb(&s)) {
printf(”%d ”, s);
} else { cerror(EEXPRESSSINTAX); return 0; }
return 1;
}
mult()
{
if (prim()==0) return 0;
while (1) {
if (match("*")) {
if (prim()==0) return 0;
printf(”* ”);
} else if (match("/")) {
if (prim()==0) return 0;
printf(”/ ”);
} else break;
}
return 1;
}
add()
{
if (mult()==0) return 0;
while (1) {
if (match("+")) {
if (mult()==0) return 0;
printf(”+ ”);
} else if (match("-")) {
if (mult()==0) return 0;
printf(”- ”);
} else break;
}
return 1; }

Модуль match
Данный модуль предназначен для первичной обработки строк и позволяет выделять из строки лексемы. Здесь описаны интерфейсные функции модуля match.

void match_init(char* line);
Процедура инициализации. Разбор строки всегда начинается с вызова этой функции. В качестве параметра передается входная строка.

void match_done(void);
Процедура деинициализации. После разбора строки необхо-димо вызвать данную функцию.

int match(char *lit);
Поиск указанной подстроки в начале входной строки. Если есть, то найденная подстрока удаляется и функция возвращает 1.

int amatch(char *lit, int len);
Аналогично предыдущему, но дополнительно указывается длина подстроки. Это используется для того, чтобы различать выражения типа ’for’ и ’formula’, где первое, это ключевое слова, а второе — идентификатор.

int symname(char *sname);
Ищет идентификатор (метку) во входной строке. Метка на-чинается с подчеркивания или буквы, далее следуют буквы, под-черкивание или цифры.

int number(int val[]);
Ищет целое знаковое число во входной строке

void skipblanks(void);
Пропускает последовательность пробельных символов (пробел, табуляция) во входной строке.

skipchars(void);
Пропускает лексемы и следующие пустые символы. Ис-пользуется для обработки ошибок.

Задание
1. Реализовать программу рекурсивного спуска выражения и перевода в постфиксный вид.
2. Реализовать главную программу, считывающую строки из входного потока и выдающую в конце сообщения «OK» в случае успешного разбора или «FAIL» в случае неуспешного разбора.
3. Добавить в процедуру разбора задание по номеру вариан-та.
4. (Дополнительное.) Изучить разработку make файлов и разработать make файл для сборки проекта из двух модулей.
5. (Дополнительное.) Функция разбора вещественного числа в инженерной форме.

Вариант 3. Строки.
Обеспечить поддержку строки. Строки записываются в кавычках. Дополнительно необходимо обеспечить ввод кавычки в виде последовательности из двух кавычек. На выходе строки выдавать в следующем формате:

string("")

где строка есть последовательность символов. Кавычка, если она была в исходной строке, должна быть заменена последовательностью символов \".

Например

"Hello World!" на выходе string("Hello World!")
"Hello "
Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу1 год
Средний балл4.53
СтоимостьНазначаете сами
ЭкспертВыбираете сами
Уникальность работыот 70%
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Прямой эфир