Главная » Просмотр файлов » Описание модельного языка. Практическое задание по модельному языку

Описание модельного языка. Практическое задание по модельному языку (1115018)

Файл №1115018 Описание модельного языка. Практическое задание по модельному языку (А.А. Вылиток - Раздаточный материал)Описание модельного языка. Практическое задание по модельному языку (1115018)2019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Практическое задание для студентов 2 курса ВМиК МГУ им. М.В. ЛомоносоваИнтерпретатор модельного языкапрограммированияТребуется разработать и реализовать интерпретатор модельного языка программирования. Инструментальный язык — С++.Синтаксис модельного языка:Синтаксис описан с помощью расширенной БНФ:a) запись вида {α} означает итерацию цепочки α, т.е. в порождаемой цепочке вэтом месте может находиться либо ε, либо α, либо αα, либо ααα и т.д.b) запись вида [α] означает, что в порождаемой цепочке в этом месте может находиться либо α, либо ε.c) чтобы отличать фигурные скобки — служебные символы БНФ от фигурныхскобок — символов модельного языка, первые выделены жирным шрифтом иподчеркнуты.d) жирным шрифтом выделены служебные слова модельного языка.Общая часть (одинаковая для всех вариантов):〈программа〉→ program { 〈описания〉 〈операторы〉 }〈описания〉→ { 〈описание〉; }〈описание〉→ 〈тип〉 〈переменная〉 { , 〈переменная〉 }〈тип〉→ int | string〈переменная〉→ 〈идентификатор〉 |〈идентификатор〉 = 〈константа〉〈константа〉→ 〈целочисленная〉 | 〈строковая〉〈целочисленная〉→ [〈знак〉] 〈цифра〉 { 〈цифра〉 }〈знак〉→+|−〈строковая〉→ " { 〈литера〉 } "〈операторы〉→ { 〈оператор〉 }〈оператор〉→ if (〈выражение〉) 〈оператор〉 else 〈оператор〉 |while (〈выражение〉) 〈оператор〉|read (〈идентификатор〉); |write (〈выражение〉 { , 〈выражение〉 } ); |〈составной оператор〉 | 〈оператор-выражение〉〈составной оператор〉 → { 〈операторы〉 }1/10Практическое задание для студентов 2 курса ВМиК МГУ им.

М.В. Ломоносова〈оператор-выражение〉 → 〈выражение〉;Семантика операторов if и while общепринятая; оператор read — оператор ввода значения переменной 〈идентификатор〉; write — оператор вывода значений списка выражений, указанных в круглых скобках. Форматы ввода и вывода данных определяютсяреализацией. Числовые константы записываются в десятичной системе счисления.О выраженииНабор операций и их старшинство:not(логическое отрицание)* / (умножение и деление)+ − (сложение и вычитание)< > <= >= == != (операции отношения)and (логическое умножение)or(логическое сложение)=(присваивание)Семантика операций общепринятая (в частности, семантика операции присваиванияэквивалентна семантике соответствующего оператора языка С).Синтаксис выражений описывается самостоятельно; настоятельно рекомендуется с помощью синтаксических правил задать старшинство операций.Для данных типа string определены следующие операции:•инициализация и присваивание•+ операция конкатенации строк; группировка слева направоНапример, если имеется определение string a = "one", b = "two", c; то в результате выполнения оператора-выражения c = a + " plus " + b; в c будет получена строка "one plus two".•операции отношения < > == !=Например, если string a = "one", b = "only", c = "one"; то истинными являются выражения a < b, a == c, b != c; ложными — c > b, a != c, a == b.Вариантная часть (расширяет язык, определенныйв общей части):В каждый вариант входит (как минимум) один из подпунктов каждого пункта, отмеченного римской цифрой.I.

Условные операторы1. 〈оператор〉 → if (〈выражение〉) 〈оператор〉2. 〈оператор〉 → case (〈выражение〉) of 〈список_вариантов〉 end;〈список вариантов〉 → 〈вариант〉 { 〈вариант〉 }2/10Практическое задание для студентов 2 курса ВМиК МГУ им. М.В. Ломоносова〈вариант〉 → 〈константа〉 { , 〈константа〉 } : 〈оператор〉Семантика оператора if общеизвестна; семантика оператора case – как в Паскале (вчастности, если значение выражения не совпадает со значением какой-либо константыв списке вариантов, это считается ошибкой; константы в разных вариантах должныбыть различными, даже в одном варианте не должно быть одинаковых констант).II.

Операторы цикла1. 〈оператор〉 → do 〈оператор〉 while (〈выражение〉) ;2. 〈оператор〉 → for ( [〈выражение〉];[〈выражение〉];[〈выражение〉])〈оператор〉Семантика операторов цикла do-while и for совпадает с семантикой соответствующихоператоров языка С.3. 〈оператор〉→ for 〈параметр цикла〉 = 〈выражение〉 step 〈выражение〉until 〈выражение〉 do 〈оператор〉〈параметр цикла〉 → 〈идентификатор〉Если записать оператор цикла с параметром в виде for I = E1 step E2 until E3 do S, где E1,E2, E3 — выражения, S — оператор, то семантика этого оператора такова: параметрцикла I принимает последовательные значения от заданного начального значения E1 дозаданного конечного значения E3 с шагом E2; при каждом значении параметра циклавыполняется оператор S. Если начальное значение больше конечного, то оператор невыполняется ни разу.

Значения выражений E1, E2, E3 вычисляются один раз перед входом в цикл. Значение параметра цикла после его нормального (не по goto) завершениясчитается неопределенным.III. Операторы перехода1. 〈оператор〉 → 〈помеченный оператор〉 | goto 〈идентификатор〉 ;〈помеченный оператор〉 → 〈идентификатор〉 : 〈оператор〉2. 〈оператор〉 → continue;3.

〈оператор〉 → break;В соответствии с контекстными условиями, любой идентификатор, используемый впрограмме, должен быть описан и только один раз. Описанием идентификатора-меткисчитается ее использование в помеченном операторе. Разные операторы не могут бытьпомечены одинаковыми метками (это эквивалентно повторному описанию этой метки);более того, будем считать, что одна и та же метка не может помечать один и тот жеоператор более одного раза.Семантика операторов continue и break совпадает с семантикой соответствующих операторов языка С и относится к оператору цикла любого вида, входящему в выбранныйвариант модельного языка.IV. Типы данных1.

〈тип〉 → boolean3/10Практическое задание для студентов 2 курса ВМиК МГУ им. М.В. Ломоносова〈константа〉 → 〈логическая〉〈логическая〉 → true | false2. 〈тип〉 → real〈константа〉 → 〈вещественная〉〈вещественная〉 → [〈знак〉] 〈целая часть〉.〈дробная часть〉〈целая часть〉 → 〈цифра〉 { 〈цифра〉 }〈дробная часть〉 → 〈цифра〉 { 〈цифра〉 }Числовые константы записываются в десятичной системе счисления.V. Дополнительные операции1.

унарный минус,2. унарные минус и плюс,3. % — остаток от деления.VI. Правило вычисления логических выражений1. «Ленивые» вычисления логических выражений (слева направо; до тех пор,пока не станет известно значение выражения).2. Вычисления по обычной схеме (слева направо; вычисление всего выражения).Контекстные условия1. Любой идентификатор, используемый в программе, должен быть описан итолько один раз.2. При инициализации переменных типы констант должны совпадать с типамипеременных.3. С помощью оператора read можно вводить данные любых типов, определенных в языке, кроме логического.4. С помощью оператора write можно выводить значения любых типов, определенных в языке.5. В операторе цикла с параметром for I = E1 step E2 until E3 do S тип выраженийи параметра цикла должен быть целочисленным.6.

Если в языке есть логический тип данных (boolean), то только логическое выражение может использоваться в условном операторе if, в операторах циклаwhile, for и do-while в качестве условия завершения цикла. Если в языке нетлогического типа данных, то используется целочисленное выражение(0 == false; любое значение, отличное от 0, == true). Вещественное выражениене может использоваться в качестве условия завершения цикла.7. Тип выражения и констант вариантов в операторе case должен быть целочисленным.4/10Практическое задание для студентов 2 курса ВМиК МГУ им. М.В.

Ломоносова8. Если в языке есть логический тип данных (boolean), то тип выражения и совместимость типов операндов в выражении определяются по правилам, приведенным в Таблице № 1, иначе — в Таблице № 2.Замечание:ƒ если в языке отсутствует какая-либо операция либо тип, указанный в качестве типа операнда операции, то строки таблиц, их содержащие, не принимать во внимание.ƒ если в языке есть логический тип данных, то результат выполнения операций отношения — логическое значение true или false, иначе — целочисленные 0 (false) либо 1 (true).ƒ X — первый операнд, Y — второй операнд двуместной операции; если операция одноместная, то вместо типа второго операнда стоит «−».тип реОперациятип ре-тип Xтип YзультатаОперациятип Xтип Yзультата+ − * / %intintint+ − * / %intintint+ − * /realrealreal+ − * /realrealreal+ − * /realintreal+ − * /realintreal+ − * /intrealreal+ − * /intrealreal+stringstringstring+stringstringstringунарные +−int–intунарные +−int–intунарные +−real–realунарные +−real–real< > <= >=== !=intintboolean< > <=>= == !=intintint< > <= >=== !=realrealboolean< > <=>= == !=realrealint< > <= >=== !=realintboolean< > <=>= == !=realintint< > <= >=== !=intrealboolean< > <=>= == !=intrealintstringstringboolean< > == !=stringstringintand orbooleanbooleanbooleanand orintintintnotboolean–booleannotint–int=intintint=intintint=realrealreal=realrealreal=intrealint=intrealint=realintreal=realintreal=stringstringstring=stringstringstring=booleanbooleanboolean< >== !=Таблица №1Таблица №25/10Практическое задание для студентов 2 курса ВМиК МГУ им.

М.В. ЛомоносоваПравила записи текста программы на модельномязыкеЭти правила характерны для большинства языков программирования:ƒ в любом месте программы, кроме идентификаторов, служебных слов ичисловых констант, может находиться произвольное число пробельныхлитер и комментариев вида /* 〈любые символы, кроме */ 〉 */.ƒ пробел в строковой константе считается значащим символом строки.ƒ внутри идентификаторов, служебных слов, числовых констант и разделителей, состоящих из нескольких символов, пробельные литеры недопустимы.ƒ между идентификаторами, числами и служебными словами должен находиться хотя бы один разделитель текста. Разделитель текста — это пробельная литера, комментарий либо разделитель, определенный в алфавитеязыка ( * / % + − < > <= >= == != , ; : ( ) ).Фазы работы интерпретатора модельного языкаКонцептуально интерпретатором выполняются следующие фазы:ƒ лексический анализ,ƒ синтаксический анализ,ƒ семантический анализ (контроль контекстных условий),ƒ генерация программы на внутреннем языке (в качестве внутреннего языкапредлагается использовать польскую инверсную запись — ПОЛИЗ),ƒ интерпретация программы на внутреннем языке.На практике некоторые фазы можно сгруппировать, т.е.

реализовать их функции на одном проходе.VII. Варианты таких группировок:1.2.Первый проход — лексический анализ; результат — последовательность лексем +таблицы (идентификаторов и констант; таблицы служебных слов и разделителейформируются заранее);Второй проход — синтаксический анализ + семантический анализ + генерация:анализируется последовательность лексем и генерируется программа на внутреннем языке, эквивалентная исходной.

На этом проходе активно используются и заполняются таблицы;Третий проход — интерпретация программы на внутреннем языке при заданныхвходных данных.Первый проход — лексический анализ + синтаксический анализ + семантическийанализ + генерация. При этом ведущую роль играет синтаксический анализатор –6/10Практическое задание для студентов 2 курса ВМиК МГУ им. М.В. Ломоносовапо его запросу лексический анализатор выдает очередную лексему; после того,как синтаксический анализатор выделил некоторую синтаксическую единицу,осуществляется контроль контекстных условий и генерируется соответствующийфрагмент внутреннего представления;Второй проход — интерпретация программы на внутреннем языке при заданныхвходных данных.VIII.

Какойбы вариант группировки фаз не был выбран, интерпретация программы на внутреннемязыке может выполняться для различных наборов входных данных.Следовательно, нужно позаботиться о хранении программы на внутреннем языке, чтобы можно было обеспечить следующие возможности:1. неоднократная интерпретация программы на внутреннем языке при различныхвходных данных (в рамках одного запуска программы-интерпретатора),2. неоднократная интерпретация программы на внутреннем языке при различныхвходных данных (при различных запусках программы-интерпретатора).Тестирование и отладкаинтерпретатораПрежде всего, необходимо осознать, что тестирование — это процесс выявления дефектов в программных продуктах.

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

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

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов учебной работы

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