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.  Конспект лекцій з курсу лінгвістичного забезпечення САПР


 

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

69372. Исследование работы ЖГДМ 114.55 KB
  Накопители информации - устройство записи, воспроизведения и хранения информации, а носитель информации - это предмет, на который производится запись информации (диск, лента, твердый носитель). Значительная часть накопителей информации, используемых в настоящее время, создана на базе магнитных носителей.
69373. КОМПЕНСАЦИЯ РЕАКТИВНОЙ МОЩНОСТИ В ЭЛЕКТРИЧЕСКИХ СЕТЯХ 179.5 KB
  Электроприемники предприятий требуют для своей работы как активной (Р), так и реактивной (Q) мощности. Реактивная мощность вырабатывается, как и активная, синхронными генераторами и передается по системе электроснабжения к потребителям.
69374. Технологии социальной работы по социальной интеграции инвалидов 154 KB
  Рассмотреть сущность и содержание понятия «интеграция инвалидов в общество»; выделить основные факторы и условия эффективной интеграции инвалидов в общество; проанализировать инклюзию как технологию интеграции инвалидов в общество; исследовать организацию досуговой деятельности как фактор, усиливающий интеграцию инвалидов в общество.
69375. ПРОГРАМУВАННЯ МІКРОПРОЦЕСОРНИХ СИСТЕМ НА БАЗІ МІКРОКОНТРОЛЕРІВ РОДИНИ МК-51 822 KB
  Більшу частину команд даної групи (таблиця 1) складають команди передачі та обміну байтами. Команди пересилки входять і в групу команд роботи з окремими бітами. Всі команди даної групи не модифікують прапорці результату, за винятком команд завантаження PSW...
69376. ОСОБЛИВОСТІ АРХІТЕКТУРИ ОКРЕМИХ ФУНКЦІОНАЛЬНИХ МОДУЛІВ МІКРОКОНТРОЛЕРА 996 KB
  Схема інкременту призначена: для збільшення на 1 у кожному машинному циклі вмісту регістрів T C0 T C1 для яких встановлений режим таймера і дозволена лічба; для збільшення на 1 вмісту регістрів T C0 T C1 для яких встановлений режим лічильника зовнішніх подій дозволена...
69377. Архітектура паралельних портів та підсистема переривань 910.5 KB
  Існує два способи обміну даними між зовнішніми пристроями (ЗВПР) і мікропроцесорною системою (МПС): паралельний, коли одночасно передаються всі біти або декілька біт слова даних; послідовний, коли біти слова даних пересилаються по черзі, починаючи, наприклад, з його молодшого розряду.
69378. Архітектура послідовних портів 1.23 MB
  Існує два способи обміну даними між зовнішніми пристроями ЗВПР і мікропроцесорною системою МПС: паралельний коли одночасно передаються всі біти або декілька біт слова даних; послідовний коли біти слова даних пересилаються по черзі починаючи наприклад з його молодшого розряду.
69379. Організація пам’яті Мікроконтролерів родини МК-51 999.5 KB
  Місце модуля памяті у структурі мікроконтролера Призначення та місце модуля памяті у мікропроцесорних системах При вивченні модульної структури мікропроцесорної системи МПС відзначалося що одним з основних її модулів є...
69380. ТАКТУВАННЯ, РЕЖИМИ ЗНИЖЕНОГО ЕНЕРГОСПОЖИВАННЯ ТА СКИДАННЯ 560.5 KB
  Блок керування та синхронізації мікропроцесора Блок керування та синхронізації призначений для формування синхронізуючих і керуючих сигналів які забезпечують координацію спільної роботи блоків МКра у всіх допустимих режимах роботи.