ТЗ як (816073), страница 2

Файл №816073 ТЗ як (ТЗ (метода) по яку) 2 страницаТЗ як (816073) страница 22020-11-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

п. 5.14) целесообразнодополнить следующим блоком действий:inputline : xx { /* Grammar Success */puts("Correct Bracket Expression");return(0);}который обеспечивает требуемую функциональную обработку при успехеграмматического разбора входной строки (см. п. 1.8).5.16. Продукции секции правил Yacc-файла bracket.y, необходимые дляприведения нетерминалов: p, s, b определяющих одиночные блоки скобоксоответствующих типов (см. п.

5.6), должны быть специфицированы спомощью альтернативных правил. В каждом из них альтернативы сверткиразличных нетерминалов правой части должны быть об'единены с помощьюоператора ИЛИ, который обозначается символом вертикальной черты (|).Например, альтернативную продукцию приведения нетерминала b следуетреализовать путем сочетания 2-х правил:b : '{' '}' ;/* rule b.1 */b : '{' xx '}' ;/* rule b.2 */в форме одного альтернативного правила:/* Braces block Alt Rule */b : '{''}'|/* alt-rule b.1 */'{' xx '}' ;/* alt-rule b.2 */которое определяет нетерминал b как блок фигурных скобок, содержащийвложенную последовательность блоков любых скобок, либо как пустой блокфигурных скобок без каких-либо скобочных символов внутри. Очевидно, чтоблоки круглых (p) и квадратных (s) могут определяться альтернативнымиправилами аналогичной структуры.5.17.

Продукции секции правил Yacc-файла bracket.y, необходимые дляприведения нетерминалов: pp, spps, xx, определяющих последовательностиблоков скобок соответствующих типов (см. п. 5.6), должны задаваться вформе лево-рекурсивных правил. Например, нетерминал xx рекомендуетсяспецифицировать следующим лево-рекурсивным правилом:/* Arbitrary brackets' blocks sequence */xx : x|xx x ;которое позволяет трактовать нетерминал xx как одиночный блок любыхскобок (x), или (|) последовательность таких блоков произвольной длины.Аналогичные лево-рекурсивные правила следует составить для приведенияпоследовательности блоков круглых скобок (pp) и комбинированнойпоследовательности из блоков круглых и/или квадратных скобок (spps).5.18.

Чтобы иметь возможность абстрагироваться от типа скобок,образующих одиночный скобочный блок, в лево-рекурсивных продукцияхсекции правил Yacc-файла bracket.y (см. п. 5.17) необходимо предусмотретьальтернативные правила разименования, которые должны обеспечиватьприведение нетерминалов sp и x (см.

п. 5.6). Например, нетерминал xцелесообразно определить следующим альтернативным правилом:/* Arbitrary brackets block */x : p | s | b ;согласно которому, к нетерминалу x приводится любой скобочный блок,вне независимости от типа образующих его скобок. Аналогичное по структуреальтернативное правило разименования следует предусмотреть дляприведения нетерминала sp, определяющее его как блок квадратных (s) иликруглых (p) скобок.5.19.

Секция функций Yacc-файла bracket.y должна содержать исходныйкод, оформленный по правилам системы программирования C, для 3-хфункций с предопределенными именами: yylex(), yyerror() и main(), которыедолжны иметь целочисленный (типа int) код возврата. Исходный кодперечисленных функций используется непосредственно для формированиякода программы BRACKET.5.20. Функция yylex() секции функций Yacc-файла bracket.y должнавыполнять лексический анализ входной строки из потока стандартного вводасо следующими целями: обнаружить скобки, распознать типы скобок изафиксировать порядковые номера скобок.

Вызов функции yylex() будетавтоматически производиться при грамматическом разборе входной строкидля получения очередных скобок, пока не достигнут символ перевода строки('\n').5.21. Для достижения целей лексического анализа, указанных в п.

5.20,исходный код функции yylex() должен предусматривать:• побайтноечтение любой заданной строки входного скобочноговыражения из потока стандартного ввода, например, с помощьюбиблиотечной функции getchar() системы программирования C;• распознавание символов скобок во входной строке например, спомощью оператора switch системы программирования C;• возврат кодов ASCII обнаруженных скобок с помощью оператора returnсистемы программирования C;• возврат нулевого кода при достижении конца входной строки спомощью оператора return(0) системы программирования C;• использование значения внешней целочисленной переменной yylval(см. п. 5.12) для фиксации порядкового номера каждой очереднойобнаруженной скобки.5.22.

Функция yyerror() секции функций Yacc-файла bracket.y должнаобеспечивать обработку ошибок расстановки скобок, обнаруженных приграмматическом разборе входной строки скобочного выражения. Ее вызовбудет происходить автоматически, когда скобочное выражение не можетбыть приведено к начальному нетерминальному символу грамматики скобок,обеспечивая аварийное прерывание грамматического разбора текущейвходной строки потока стандартного ввода.5.23. Спецификация функции yyerror() в Yacc-файле bracket.y, должнаиметь единственный аргумент типа (char *), который по умолчанию содержитадрес предопределенной символьной строки: "syntax error". Аргументфункции yyerror() следует использовать для формирования диагностическогосообщения в соответствии с требованием п.

1.7. Для диагностики позицииошибки по номеру неверно установленной скобки, исходный код функцииyyerror() должен предусматривать использование значения внешнейцелочисленной переменной yylval. Для отображения диагностическогосообщения в потоке стандартного вывода, рекомендуется применитьбиблиотечную функцию printf() системы программирования С.5.24. Спецификация функции main() в секции функций Yacc-файлаbracket.y должна содержать исходный код основной функции программыBRACKET, который обеспечивает обращение к функции синтаксическогоанализа yyparse() и передачу ее кода возврата во внешнюю операционнуюсреду.

Исходный код функции yyparse() формируется генераторомсинтаксических анализаторов YACC по Yacc-файлу и предусматривает вызовфункции yylex() для выполнения лексического анализа, также как передачууправления функции yyerror() для обработки ошибок грамматическогоразбора. Код возврата функции yyparse() должен однозначно отражатьрезультат грамматического разбора, принимая значение 0 при его успехе,или 1 - при обнаружении синтаксических ошибок.5.25. Исходный код секции функций Yacc-файла bracket.y и функцииyyparse() образует исходный код программы BRACKET, который долженформироваться генератором синтаксических анализаторов YACC в файле спредопределенным именем y.tab.c в текущем рабочем каталоге файловойсистемы OS UNIX.

Выполняемый модуль программы BRACKET должен бытьсоздан по файлу исходного кода y.tab.c в выполняемом файле bracketсредствами компилирующей системы программирования C.Стадии и этапы разработкиПроцесс разработки программы BRACKET целесообразно разделяться наследующие 3 стадии:• составить Yacc-файл bracket.y в выбранном рабочем каталоге файловойсистемы OS UNIX, используя любой текстовый редактор, например,xedit, ориентированный на работу в операционной среде X WindowSystem, или joe, для редактирования в консольном режиме;• получить исходный код синтаксического анализатора в файле y.tab.cтекущего каталога файловой системы OS UNIX, обработав Yacc-файлbracket.y командой yacc, следующим образом:$ yacc bracket.y• сформировать выполняемый модуль в файле bracket текущего каталогафайловойсистемыOSUNIX,компилируяисходныйкодсинтаксического анализатора в файле y.tab.c следующей командой:$ cc -o bracket y.tab.cРезультаты разработки программы BRACKET необходимо оформить в видепроектного документа, содержащего описание грамматики скобок и файласпецификаций для генератора синтаксических анализаторов YACC.Порядок контроля и приемки1.

Для проверки функционирования программы BRACKET должны бытьпредложены контрольные примеры, предусматривающие стандартныйввод корректных и некорректных скобочных выражений с учетомвложенности и конкатенации блоков скобок различных типов.2. Для приемки программы BRACKET должен быть организован вызоввыполняемого файла bracket в консольном режиме работы OS UNIXили режиме эмуляции терминала операционной среды X WindowSystem.Приложение1Текст высокоуровневой спецификации.Приложение2При разработке синтаксических анализаторов в OS UNIX дляпроектированияпрограммыBRACKETрекомендуетсяиспользоватьлитературные источники, перечисленные ниже.1.

Рейуорд-Смит В.Дж. Теория формальных языков. Вводный курс, M.:Радио и связь, 1988.2. Тихомиров В.П., Давидов М.И. Операционная система ДЕМОС:инструментальные средства программирования, М.: Финансы истатистика, 1988.3. SCO XENIX, Development System, YACC Programmer Guide, SCO Inc.,1986. ( Имеется русский перевод: Генератор синтаксическиханализаторов YACC. Руководство Программиста ).

Характеристики

Тип файла
PDF-файл
Размер
190,79 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее