Главная » Просмотр файлов » Е.А. Кузьменкова, А.К. Петренко - Формальная спецификация программ на языке RSL

Е.А. Кузьменкова, А.К. Петренко - Формальная спецификация программ на языке RSL (1158800), страница 6

Файл №1158800 Е.А. Кузьменкова, А.К. Петренко - Формальная спецификация программ на языке RSL (Е.А. Кузьменкова, А.К. Петренко - Формальная спецификация программ на языке RSL) 6 страницаЕ.А. Кузьменкова, А.К. Петренко - Формальная спецификация программ на языке RSL (1158800) страница 62019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Кроме этих основных операций по наполнению информационной базы системы полезно предусмотреть операции, позволяющие изменять отдельные элементы базы, а также осуществлять в базе поиск полезной с точки зрения разработчика спецификаций информации. Некоторые примеры таких операций приводятся в описании заданий практикума, однако их набор может быть расширен по желанию разработчика спецификаций.

Глава 3. Сценарий работы с редактором eden

В данной главе описывается сценарий работы с основным инструментом поддержки RAISE технологии – синтаксически управляемым редактором eden (entity editor), обеспечивающим ввод и редактирование текстов на языке RSL. Этот инструмент разработан датской компанией Computer Resources International – CRI.

    1. Начало работы с редактором

Редактор eden является синтаксически управляемым редактором, т.е. он гарантирует синтаксическую правильность любого вводимого с помощью редактора текста спецификации на языке RSL и кроме того обеспечивает статическую проверку типов. Функционирование редактора осуществляется в среде операционной системы UNIX.

При синтаксически управляемом редактировании процесс построения текста программы заключается в следующем. В любой момент редактирования текст программы (спецификации) представляет собой текст на базовом языке программирования (в нашем случае на языке RSL), куда могут входит метапеременные языка (т.н. гнезда редактирования) для обозначения еще не конкретизированных фрагментов, подлежащих уточнению в дальнейшем. При выборе пользователем любой такой метапеременной (любого гнезда) в качестве объекта редактирования редактор предлагает список вариантов, показывающих на что может быть заменена данная метапеременная в соответствии с синтаксисом базового языка. Таким образом, отсекается возможность возникновения синтаксически неверных конструкций, поэтому на любом этапе редактирования текст является синтаксически правильным. В ходе синтаксически управляемого редактирования в памяти системы формируется абстрактное синтаксическое дерево, представляющее собой вывод текста в грамматике базового языка. Процесс построения текста завершается, когда все входящие в текст метапеременные будут заменены на соответствующие конструкции базового языка, т.е. в тексте не останется ни одного вхождения метапеременных (ни одного гнезда редактирования).

Сценарий работы с редактором рассмотрим на примере построения текста модуля QUEUE, содержащего следующую спецификацию очереди:

QUEUE 

class

type

Element,

Queue  Element*

value

empty : Queue  ,

enq : Element  Queue  Queue

enq(e,q)  q ^ e,

deq : Queue Queue  Element

dec(q)  (tl q,hd q)

pre q  empty

end

Для начала работы с редактором создайте средствами UNIX директорию для хранения своих файлов и объявите ее текущей. Вызов редактора осуществляется командой:

raise_eden QUEUE,

где QUEUE – имя модуля. Вид окна, полученного на экране в результате выполнения этой команды, показан на рисунке 1.



Рис. 1

В верхней части окна располагается поле, содержащее заголовок редактируемого модуля. Ниже следует командная строка, которая используется для вывода информационных сообщений и сообщений об ошибках (в данный момент там содержится информация о версии редактора). Под командной строкой располагается непосредственно окно редактирования, где и производятся основные операции по редактированию текста. Три верхние строчки этого окна содержат краткую информацию о редактируемом модуле: имя модуля, его контекст, т.е. список связанных с ним модулей, и статус (количество обнаруженных в модуле ошибок по несоответствию типов и количество гнезд редактирования). Ниже располагается текст самого модуля. В данный момент этот текст представляет собой вхождение единственной метапеременной lib_module, которая и является текущей метапеременной (текущим гнездом редактирования). Справа и снизу от окна редактирования находятся вертикальная и горизонтальная полосы прокрутки. В нижней части окна располагается поле, используемое для вывода подсказок при синтаксически управляемом редактировании. Здесь содержится информация о текущей метапеременной, подлежащей редактированию (гнезде редактирования), и список вариантов, определяющих замену текущей метапеременной на возможные конструкции языка RSL.

    1. Командное меню редактора

Вызов командного меню осуществляется по нажатию правой кнопки мыши. Вид окна редактора после выполнения этой операции приведен на рисунке 2.


Рис. 2

Каждый пункт командного меню содержит, как правило, несколько команд, поэтому каждому пункту меню соответствует выпадающее подменю, откуда и выбираются команды редактора. При этом в подменю рядом с названием команды указывается комбинация управляющих клавиш для ее вызова, таким образом, вызов команды может производиться как с помощью меню, так и посредством набора соответствующей комбинации управляющих клавиш.

Кратко опишем назначение основных пунктов командного меню:

  • transforms – позволяет при синтаксически управляемом редактировании заменять текущее гнездо редактирования на некоторую конструкцию языка RSL, список которых указывается в качестве подменю данного пункта. Обратите внимание на то, что содержимое подменю полностью совпадает со списком альтернатив в поле подсказки, т.е. выбор очередной альтернативы может производиться как в подменю данного пункта, так и непосредственно в поле подсказки.

  • edit – содержит команды, позволяющие вносить изменения в редактируемый текст.

  • errors позволяет изменять формат вывода сообщений об ошибках, т.е. выдавать эти сообщения в более развернутой или более краткой форме.

  • save содержит команды, позволяющие сохранять отредактированный текст, причем сохранение производится в текущей директории (при выборе команд, начинающихся ключевым словом write) или текущей библиотеке (команды начинаются ключевым словом save).

  • file – позволяет замещать текущее гнездо редактирования содержимым указанного файла (при этом для успешной замены содержащийся в файле текст должен быть синтаксически правильным) и, наоборот, запоминать в файле с указанным именем выбранный фрагмент редактируемого текста в ASCII формате.

  • exit – команда выхода из редактора.

    1. Редактирование модуля

Начальный этап редактирования модуля показан на рисунке 1. Редактируемый текст представляет собой единственное гнездо редактирования lib_module, это же гнездо является текущим (на экране выделено на фоне остального текста). Выберите в поле подсказки или в пункте transforms командного меню альтернативу lib_scheme, т.к. спецификация разрабатываемого модуля представляет собой схему в терминологии RSL. Эффект выполнения команды иллюстрирует рисунок 3.

Как видно из рисунка, теперь текст модуля содержит описание схемы, причем имя схемы совпадает с именем модуля. Текущим гнездом редактирования является class_expr, соответствующее следующей в порядке обхода абстрактного синтаксического дерева метапеременной. Поле подсказки содержит уже новый список альтернатив, определяющий возможные варианты уточнения для метапеременной class_expr.

Редактор eden позволяет наряду с синтаксически управляемым редактированием осуществлять редактирование в текстовом режиме. Для этого в позиции текущего гнезда редактирования на клавиатуре набирается нужный фрагмент текста, причем данный фрагмент должен соответствовать синтаксической категории гнезда редактирования. Редактор производит разбор введенного фрагмента и в случае успеха добавляет полученное в ходе разбора дерево к общему дереву вывода конструируемого модуля.

Р
ис. 3

В качестве следующего шага редактирования используйте текстовый режим, для чего наберите в выделенной позиции фрагмент class end . При этом на экране появляется указатель текущего вводимого символа, называемый кареткой, выделенная область ввода представляет собой текстовый буфер, куда и помещается вводимый текст. Передвижение каретки на тот или иной символ внутри области ввода осуществляется с помощью мыши или нажатием клавиш ^B (назад) и ^F (вперед), символы слева от каретки могут быть удалены нажатием клавиши Delete , символы справа от каретки удаляются нажатием ^D. Если введенный текст является синтаксически правильным значением для данного гнезда редактирования, выход из текстового режима осуществляется по выполнению любой команды, не относящейся к режиму текстового редактирования.

В нашем случае для выхода из текстового режима достаточно (не нажимая клавишу RETURN) переместить указатель мыши на любой фрагмент текста, лежащий вне области ввода, например, на имя схемы QUEUE и щелкнуть левой кнопкой мыши. После выхода из текстового режима для продолжения процесса редактирования щелкните левой кнопкой мыши на фрагменте class . Вид экрана после выполнения этих операций приведен на рисунке 4.



Рис. 4

Отображенное на данном рисунке состояние редактора показывает, что разбор введенного фрагмента текста произведен успешно (о чем свидетельствует нулевое количество ошибок в строке статуса) и данному фрагменту соответствует синтаксическое дерево категории class_expr . Заметим, что полностью аналогичный результат был бы получен в режиме синтаксически управляемого редактирования (см. рис. 3) при выборе альтернативы basic_class_expr в списке альтернатив.

Для продолжения процесса редактирования нажмите клавишу RETURN, по которой вызывается команда обхода соответствующего синтаксического дерева слева направо с отображением на экране всех встречающихся в порядке обхода гнезд редактирования. Полученный вид экрана иллюстрирует рисунок 5.

Еще раз нажмите клавишу RETURN (при этом в поле подсказки появится список альтернатив для гнезда decl_string) и выберите в поле подсказки альтернативу type_decl. Эффект выполнения данных действий показан на рисунке 6.

Р

ис. 5

Рис. 6


Теперь в выделенной позиции наберите на клавиатуре имя типа Element (при этом редактор переходит в текстовый режим) и нажмите клавишу RETURN. По нажатию данной клавиши редактор возвращается в режим синтаксически управляемого редактирования (поскольку введенный фрагмент был синтаксически правильным) и на экране появляется следующее в порядке обхода дерева гнездо редактирования (см. рис. 7).

Рис. 7

    1. Обработка ошибок редактирования

Рассмотрим теперь обработку ошибок редактирования. Для этого введите в выделенной области некоторый текст, содержащий ошибку, например, синтаксически неверное определение типа в виде фрагмента Queue  и нажмите клавишу RETURN. Вид экрана после выполнения этих действий иллюстрирует рисунок 8.

Р
ис. 8

Как видно из этого рисунка, в командной строке появляется сообщение о синтаксической ошибке, редактор продолжает оставаться в текстовом режиме и каретка располагается в месте обнаружения ошибки. Устранить такую ошибку можно двумя способами. Во-первых, можно, оставаясь в текстовом режиме, отредактировать область ввода таким образом, чтобы она содержала синтаксически правильный фрагмент. Во-вторых, можно выполнить команду undo из пункта edit командного меню, возвращающую редактор из текстового режима в режим синтаксического управления (при этом редактор возвращается в то состояние, в котором он находился до перехода в текстовый режим) и дальнейшее редактирование продолжать уже в синтаксически управляемом режиме. Второй способ наиболее удобен в тех ситуациях, когда пользователь нечетко помнит синтаксис языка и ему трудно устранить ошибку прямым редактированием текста.

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

Тип файла
Документ
Размер
784,5 Kb
Тип материала
Высшее учебное заведение

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

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