ТЗ як (816073)
Текст из файла
Пример отчета по лабораторнымработам по автоматизированнойразработке синтаксическиханализаторовСинтаксический анализ скобочныхвыраженийТекст задания: разработать программу синтаксического анализатора(далее по тексту - программа BRACKET) для проверки расстановки скобок вматематических выражениях.ВведениеНастоящий документ определяет техническое задание на разработкупрограммы синтаксического анализатора (далее по тексту - программаBRACKET) для проверки расстановки скобок в математических выражениях.Основания для разработкиПрограмма BRACKET разрабатывается в рамках лабораторной работы покурсу "Программное обеспечение САПР" для практического изученияэтапа синтаксического анализа в процедурах трансляции формальныхязыков.Назначение разработкиПрограмма BRACKET предназначается для реализации грамматическогоразбора скобочных конструкций в пакетах символической обработкиматематических формул.Требования к программе1.
Требования к функциональным характеристикам1.1. Программа BRACKET должна обеспечивать синтаксический анализрасстановки скобок в произвольном математическом выражении, котороепередается символьной строкой из потока стандартного ввода.1.2. Программа BRACKET должна предусматривать возможность обработки3-х типов открывающих и закрывающих скобок: фигурные, квадратные икруглые, которые могут одновременно присутствовать и повторяться вовходном выражении в прозвольном числе экземпляров.1.3.
Программа BRACKET должна осуществлять количественный контрольсоответствия числа открывающих и закрывающих скобок каждого типа.1.4. Программа BRACKET должна проверять, что каждой закрывающейскобке любого типа предшествует открывающая скобка того же типа.1.5. ПрограммаBRACKETдолжнаучитыватьобщепринятыематематические правила взаимного расположения скобок различных типов,в частности, круглые скобки не могут окружать квадратные или фигурные, авнутри любой пары квадратных скобок не должно быть фигурных.1.6.
Программа BRACKET должна обнаруживать любые нарушенияпорядка расположения скобок, которые противоречат требованиям пп. 1.3 1.5.1.7. Любые нарушения допустимого порядка расположения скобок вовходной строке из потока стандартного ввода должны сопровождатьсяинформационным сообщением "*** syntax error" в потоке стандартноговывода. Диагностика ошибки должна содержать порядковый номер первойскобки, расположение которой противоречит требованиям пп. 1.3 - 1.5.1.8. РезультатраспознаванияпрограммойBRACKETкорректногоскобочного выражения должен сопровождаться отображением в потокестандартного вывода информационным сообщением "Correct BracketExpression".2.
Требования к надежности2.1. Программа BRACKET не должна иметь каких-либо ограничений почислу скобок и других символов в анализируемом выражении, кромевнутренних ограничений инструментальных средств, использованных для еереализации.2.2. Программа BRACKET не должна иметь каких-либо ограничений поуровню вложенности и числу последовательных скобочных блоков, кромевнутренних ограничений инструментальных средств, использованных для еереализации.3. Требования к составу и параметрам технических средствПрограмма BRACKET должна быть разработана исходя из возможностиреализации на стандартном составе технических средств компьютеров любойархитектуры, после соответствующей трансляции исходного кода.4. Условия эксплуатации4.1. Программа BRACKET должна быть ориентирована на эксплуатацию воперационной среде OS UNIX любой версии.4.2.
Программа BRACKET должна быть реализована в виде выполняемогофайла с именем bracket, по которому она должна вызываться средствамилюбого командного процессора OS UNIX.4.3. Программа BRACKET должна эксплуатироваться в интерактивномрежиме, читая строку входного выражения из потока стандартного ввода иотображая результат ее обработки в потоке стандартного вывода.5. Требования к информационной и программной совместимости5.1. Чтобыобеспечитьвыполнениетребуемыхтехническиххарактеристик, программа BRACKET должна реализовывать синтаксическийанализ любой входной строки скобочного выражения из потока стандартноговвода.5.2.
СинтаксическийанализаторпрограммыBRACKETдолженобеспечивать грамматический разбор скобок с целью установитьсоответствие или несоответствие содержащей их строки потока стандартноговвода требуемому формату скобочного выражения.5.3. Длявыполненияграмматическогоразборасинтаксическийанализатор программы BRACKET должен реализовывать однозначнуюконтекстно-свободную грамматику простого предшествования, котораяориентирована на обработку строки заданного скобочного выражения изпотока стандартного ввода и далее по тексту называется грамматикой скобок.5.4. Грамматику скобок синтаксического анализатора программы BRACKETдолжны составлять следующие элементы:• терминальные символы (терминалы), соответствующие структурнымединицам (лексемам) входного скобочного выражения;нетерминальный символ (начальный нетерминал), ккоторому приводится входное скобочное выражение;• нетерминальные символы (нетерминалы), обозначающие допустимыеварианты комбинации лексем во входном скобочном выражении;• система продукций (правил вывода), обеспечивающая грамматическийразбор входного скобочного выражения.• начальный5.5.
Терминальныесимволыграмматикискобоксинтаксическогоанализатора программы BRACKET должны представляться лексемами,специфицированными следующими литералами:'(', ')', '[', ']', '{', '}',которые обозначают коды ASCII соответствующих круглых, квадратных ифигурных открывающих или закрывающих скобок.5.6. Нетерминальные символы грамматики скобок должны обозначатьсяследующими именами:p, pp, s, sp, spps, b, x, xx.Онидолжныопределятьсяпродукциямиграмматикискобоксинтаксического анализатора программы BRACKET в форме, близкой нотацииБэкуса-Наура (БНФ), следующим образом:p : блок круглых (Parentheses) скобок;pp :последовательность блоков круглых скобок;s : блок квадратных (Square) скобок;sp : блок квадратных или круглых скобок;spps : последовательность блоков круглых и/или квадратныхскобок;b : блок фигурных (Braces) скобок;x : блок любых (круглых, квадратных или фигурных) скобок;xx : последовательность произвольных скобочных блоков5.7.
Начальныйнетерминалграмматикискобоксинтаксическогоанализатора программы BRACKET должен обозначаться именем inputline. Ондолжен выводиться из любой корректной последовательности произвольныхскобочных блоков. Грамматический вывод начального нетерминала из любойвходной строки, содержащей корректную расстановку скобок, должнаобеспечивать система продукций грамматики скобок.5.8. Системапродукций(правилвывода)грамматикискобоксинтаксического анализатора программы BRACKET должна обеспечиватьграмматический разбор произвольной входной строки потока стандартноговвода путем приведения терминалов и нетерминалов к начальномунетерминалу методом LR(1) анализа снизу-вверх по дереву вывода.Приведение входной строки к начальному нетерминалу по правилам выводаграмматики скобок должно означать успех грамматического разбораскобочного выражения, т.е.
распознавание корректного скобочноговыражения. Альтернативный результат должен рассматриваться каксинтаксическая ошибка расстановки скобок во введенной строке.5.9. Для разработки синтаксического анализатора программы BRACKET,необходимо использовать генератор синтаксических анализаторов (далее потексту - YACC) из состава OS UNIX, инструментальные средства которогоориентированы на обработку файла спецификаций (далее по тексту, Yaccфайл) проектируемого синтаксического анализатора.5.10. При разработке синтаксического анализатора программы BRACKETнеобходимо составить Yacc-файл, отражающий специфику грамматическогоразбора скобочного выражения, и сохранить его под именем bracket.y ввыбранном доступном рабочем каталоге файловой системы OS UNIX.5.11.
Проектируемый Yacc-файл bracket.y должен состоять из 3-х секций:деклараций, правил и функций. Разделителем секций должны бытьсимволические пары %%, расположенные в начальных позицияхсодержащих их строк Yacc-файла. Каждая секция Yacc-файла bracket.yдолжна содержать соответствующее число комментариев в формате,принятом для системы программирования C.5.12. Секция деклараций Yacc-файла bracket.y должна включать:• объявление начального нетерминала грамматики скобок с помощьюдирективы %Start;• cпецификацию блока внешних описаний, ограниченную директивами%{ и %}, в котором необходимо декларировать и определитьвнешнюю (extern) целочисленную (типа int) переменную yylval дляфиксации порядковых номеров скобок в скобочном выражении.5.13.
В секции правил Yacc-файла bracket.y должны быть приведеныописания продукций приведения нетерминалов грамматики скобок всоответсвии с требованием пп. 5.5 - 5.8.5.14. Каждая продукция секции правил Yacc-файла bracket.y должна бытьзадана в нотации, близкой к форме Бэкуса-Наура, где в левой частиуказывается приводимый нетерминал, а в правой - последовательностьтерминалов и/или нетерминалов грамматики скобок, которые перечисляютсячерез пробел.
Для разделения частей продукции должен использоватьсясимвол двоеточия (:). Каждую продукцию нужно начинать с новой строки изавершать либо символом точки с запятой (;), либо блоком действий вфигурных скобках. Например, начальный нетерминал inputline можетопределяться следующим правилом:inputline : xx ;которое позволяет трактовать inputline как последовательностьпроизвольных скобочных блоков, свернутую в нетерминал xx.5.15. Продукции секции правил Yacc-файла bracket.y, приведениенетерминаловкоторыхнеобходимосопровождатьфункциональнойобработкой, должны содержать блоки действий. Блоки действий должнырасполагаться в правых частях продукций и ограничиваться парой фигурныхскобок. Внутри блоков действий можно использовать любые конструкции ивызовы функций системы программирования C. Например, правилоопределения начального нетерминала inputline (см.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.