42370

ВИЗНАЧЕННЯ ВІДНОШЕНЬ ПЕРЕДУВАНЬ ЗА ПРАВИЛАМИ ГРАМАТИКИ

Лабораторная работа

Информатика, кибернетика и программирование

Задачею висхідного розбору є зведення вхідного термінального ланцюжка до аксіоми. Для висхідного розбору критичним є тип виводу. Вивід зліва направо визначається таким чином, що на кожному кроці замінюється основа поточної синтенсійної форми. Тоді ланцюжок справа від основи завжди буде складатися лише з термінальних символів. Ключовим питанням при висхідному розборі є питання – як знайти основу та на який не термінал її замінити? Це питання легко вирішується для граматик простого передування.

Украинкский

2013-10-29

142.5 KB

7 чел.

Міністерство освіти і науки, молоді та спорту України

Національний Технічний університет України «КПІ»

Кафедра АПЕПС

Звіт за лабораторною роботою №4

з дисципліни «Лінгвістичне забезпечення САПР»

на тему:

«ВИЗНАЧЕННЯ ВІДНОШЕНЬ ПЕРЕДУВАНЬ ЗА ПРАВИЛАМИ ГРАМАТИКИ»

Виконав

студент 3-го курсу ТЕФ

групи ТР-91

Лисий А.І.

Перевірила

Третяк В.А.

Київ – 2011


Вступ

Задачею висхідного розбору є зведення вхідного термінального ланцюжка до аксіоми. Для висхідного розбору критичним є тип виводу. Вивід зліва направо визначається таким чином, що на кожному кроці замінюється основа поточної синтенсійної форми. Тоді ланцюжок справа від основи завжди буде складатися лише з термінальних символів. Ключовим питанням при висхідному розборі є питання – як знайти основу та на який не термінал її замінити? Це питання легко вирішується для граматик простого передування.


  1.  Виконання лабораторної роботи

Граматика називається граматикою простого передування, якщо вона є приведеною, оборотною, і якщо між будь-якими двома не терміналами або терміналами виконується не більше однієї умови передування.

Розглянувши два символи, що належать обєднаному словнику V, можна припустити, що існує деяка синтенсійна форма RS…, і на деякому етапі або R, або S, або RS належать основі.

  1.  RS… R•>S  U::=…R, SєVT*
  2.  RSR=S  U::=…RS…
  3.  …RS… R<•S  U::=S…

Жодне з умов передування не є симетричним. Якщо умови передування не визначені – не можуть стояти поряд в синтенсійній формі.

Визначення відношень передувань:

  1.  R=S => U::=…RS…
  2.  R<•S  => U::=…RV…, (R=V), SєFirst+(V), VєVN
  3.  R•>S => SєVT, U::=…VW…(V=W), RєFirst+(V), SєFirst+(W)

Алгоритм побудови відношень передувань:

  1.  Визначення рівностей R=S
  2.  Вибірка рівностей R=V, VєVN, R<•First+(V)
  3.  Визначення відношень R•>S
  4.  V=W, VєVN:

обираємо ті нерівності, де першим є не термінал

Last+(V) •>W

  1.  якщо WєVN, то необхідно визначити Last+(V) •>First+(W)

Для вирішення можливих конфліктів, наприклад, праворекурсивне правило або правило, в якому після праворекурсивного нетерміналу щось стоїть можна використовувати стратифікацію. Але вирішити усі конфлікти за допомогою стратифікації не завжди вдається, тоді слід дієти по ситуації.  

 

  1.  Граматика заданої мови програмування

<програма> ::= program id var <спис.огол1> main { <спис.опер1> }

<спис.огол> ::= <огол.> ; <спис.огол> | <огол.> ;

<спис.огол1> ::= <спис.огол>

<огол.>::=<тип> :  <спис.id1>

<тип>::=double  |  int

<спис.опер>::=<оператор1> ; | <оператор1> ; <спис.опер>

<спис.опер1>::=<спис.опер>

<оператор1>::=<оператор>

<оператор>::=<цикл>  |  <ум.оп>  |  <ввід>  |  <вивід>  |  <присвоєння>

<цикл>::= for id = <вираз1> : <лог.вираз1> | id = <вираз1>  <оператор>

<ум.оп>::=if [ <лог.вираз1> ] { <спис.опер1> }

<ввід>::=read ( <спис.id1> )

<вивід>::=write ( <спис.id1> )

<присвоєння>::= id = <вираз1>

<вираз>::= <додан.>  | <вираз> + <додан.1>  |  <вираз> - <додан.1>  |  - <додан.1>

<додан.> ::= <множн.>  |  <додан.> * <множн.>  | <додан.> / <множн.>

<додан.1> ::= <додан.>

<множн.> ::= con  |  ( <вираз1> )  |  id

<спис.id>::=id |  <спис.id> , id

<спис.id1> ::= <спис.id>

<відношення>::=<вираз> <знак> <вираз1>

<вираз1>::=<вираз>

<знак>::= >  |  <  |  >=  |  <=  |  ==  |  !=

<лог.вираз>::=<лог.додан.1> | <лог.вираз> && <лог.додан.1>

<лог.вираз1>::=<лог.вираз>

<лог.додан.> ::= <лог.множ.>  |  <лог.додан.> || <лог.множ.>

<лог.множ.>::= <лог.од.>  |  ! <лог.множ.>  |  [ <лог.вираз1> ]

<лог.додан.1>::=<лог.додан.>

<лог.од.> ::=<відношення> | true | false


  1.  Приклади роботи програми

На рисунку нижче наведено приклад роботи програми з помилками. Результат роботи подано в вигляді таблиці відношень. Помилки відмічаються за допомогою забарвлення відповідної клітки таблиці в червоний колір.

Рисунок 1 - Приклад роботи програми з помилками

На рисунку 2 наведено приклад роботи програми без помилок. Жодна з кліток не забарвлена в червоний колір, що свідчить про відсутність конфліктів відношень.

Рисунок 2 - Приклад роботи програми без помилок


Висновки

В даній лабораторній роботі були визначені відношення передування для заданої граматики. Результатом роботи програми є таблиця передувань та можливих конфліктів заданої граматики.


Список використаних джерел

  1.  Сліпченко, В.Г. Основи побудови компіляторів: Навч. посібник / В.Г. Сліпченко, В.М. Медведєва. – К.: ІЗМН, 2004. – 104с.
  2.  Ахо, А. Компиляторы: принципы, технологии и инструменты. : Пер. с англ / А. Ахо, Р. Сети, Дж. Ульман. – М. : Издательский дом «Вильямс», 2003. – 768с. : ил. – Парал. тит. англ.
  3.  Конспект лекцій з курсу лінгвістичного забезпечення САПР


 

А также другие работы, которые могут Вас заинтересовать

35390. Охрана труда отдельных категорий работников 178 KB
  Условия и дополнительные гарантии труда женщин. Работы, на которых запрещается применение труда женщин. Ограничение труда женщин на определенных работах. Льготы для беременных женщин и женщин, имеющих детей. Охрана труда несовершеннолетних.
35391. Тема: Команди MSDOS: cls dte time copy del dir find mem mkdir lbel rd. 68 KB
  Для створення текстового файла потрібно ввести команду: copy соп [диск:] [шлях ] ім'я файла. Після введення цієї команди слід по черзі вводити рядки файла. Формат команди: del [диск:][шлях ]ім'я файла.DOC вилучення файла PET.
35392. Тема: Управління папками файлами і ярликами Мета: придбати уміння і навик роботи з папками і файлам 51.97 KB
  Індивідуальне завдання Для того щоб освоїти прийоми роботи з теками і файлами необхідно виконати наступне: 1 відкрити вікно папки диска D: і створити в ній скажімо папку Petrenko букви латинські;відкрив вікно паки диска Д за допомогою клавіші лівої мишіІ створив в ній папку Педренко За допомогою панелі інструментів правої кнопки миші2 створив папку за допомогою миші у файлі миші педренкооооо 2 перейменувати папку Petrenko в папку Петренко букви кирилиці; перейменувати за допомогою інтервалу клацання кнопки...
35393. Основи теорії держави та права 113.5 KB
  Держава - це суверенна політико-територіальна організація влади певної частини населення в соціальна неоднорідному суспільстві, що має спеціальний апарат управління і примусу, здатна за допомогою права робити свої веління загальнообовязковими для населення всієї країни, а також здійснювати керівництво та управління загальносуспільними справами.
35394. тематика Розглянута та схвалена Розроблені викладачем на засіданні ци. 5 MB
  Сошина 2007 Практична робота №14 Тема: Використання редактора реєстру. Мета: Ознайомитися з редактором реєстру Windows XP навчитися здійснювати пошук інформації в реєстрі а також здійснювати зміни в реєстрі. На цьому практичному занятті ви використаєте Редактор реєстру Regіstry Edіtor для перегляду інформації в реєстрі. Ви використаєте команду Знайти Fіnd Редактори реєстру Regіstry Edіtor для пошуку певного слова в назвах розділів а також внесете зміни до реєстру додавши нове значення.
35395. Створення і запуск програми на асемблері 97.5 KB
  Яка інформація знаходиться у файлі лістингу Містить код асемблера початкової програми а також розширену інформацію про цей код. Крім того в кінці лістингу TSM формує таблиці з інформацією про мітки і сегменти використовувані в програмі. Якщо є помилки або сумнівні ділянки коду то TSM включає в кінець лістингу повідомлення про них. Крім того що дуже зручно ці ж повідомлення включаються в текст лістингу безпосередньо після помилкового рядка.
35396. Культура Древнего Китая 703.71 KB
  Корни китайской культуры уходят глубоко в древность. Уже в 3-м —-м тысячелетии до н. э. Китай был обширной страной, где владели пахотными орудиями, умели строить дома, крепости и дороги, торговали с соседними странами, плавали по рекам и отваживались выходить в море
35397. Резервування і ініціалізація памяті 54.5 KB
  Мета: Навчитися резервувати і ініціалізувати память під програми на асемблері. Це основна команда пересилки даних. Вона реалізує найрізноманітніші варіанти пересилки. Відзначимо особливості застосування цієї команди.
35398. Програмування арифметичних дій 43.5 KB
  Мета: Навчитися резервувати і ініціалізувати память під програми на асемблері.