42368

Побудова синтаксичного аналізатора

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

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

Синтаксичний аналізатор отримує послідовність лексем з лексичного аналізатора і перевіряє чи може ця послідовність бути утворена за заданим алогритмом граматикою. оп ввід вивід присвоєння цикл...

Украинкский

2014-09-23

198.5 KB

7 чел.

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

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

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

Лабораторна робота №2

з курсу Лінгвістичне забезпечення САПР

на тему: «Побудова синтаксичного аналізатора»

Виконав

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

групи ТР-91

Лисий А.І.

Перевірила

Третяк В.А.

Київ – 2011


Вступ

Синтаксичний аналізатор отримує послідовність лексем з лексичного аналізатора і перевіряє, чи може ця послідовність бути утворена за заданим алогритмом (граматикою) . Результатом роботи синтаксичного аналізатора можуть бути повідомлення про помилки (якщо такі мають місце), або про успішне завершення аналізу. Повідомлення виводяться в спеціальне текстове поле програми.


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

Процес граматичного розбору складеться з окремих процедур для кожного нетермінала. Кожна процедура відображає праву частину відповідного правила. Вона намагається знайти у вихідному потоці підланцюжок, що починається з поточної лексеми і може бути інтерпретована як нетермінал.

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

Початкова граматика:

  1.  <програма>::= program <id>; var <спис. огол> main{<спис. опер>}
  2.  <спис. огол>::=<огол.>; <спис. огол>|<огол.>;
  3.  <огол.>::=<тип>:<спис. id>;
  4.  <тип>::=double | int 
  5.  <спис. опер>::=<оператор>;|<оператор>;<спис. опер>
  6.  <оператор>::=<цикл> | <ум. оп> | <ввід> | <вивід> | <присвоєння>
  7.  <цикл>::=for(<id>=<вираз>;<лог. вираз>;<id>=<вираз>)<оператор>
  8.  <ум. оп>::=if (<відношення>) {<спис. опер>}
  9.  <ввід>::=read(<спис. id>)
  10.  <вивід>::=write(<спис. id>)
  11.  <присвоєння>::=<id>=<вираз>
  12.  <вираз>::=<додан.> |<вираз>+<додан.> | <вираз>-<додан.>
  13.  <додан.> ::=<множн.>|<додан.>*<множн.> |<додан.>/<множн.>
  14.  <множн.> ::= <конст> | (<вираз>) | <id>|-<вираз>
  15.  <конст>::=<цбз>|<цбз>.|<цбз>.<цбз>
  16.  <цбз>::=<цифра>|<цбз><цифра>
  17.  <цифра>::= 0 |…| 9
  18.  <спис. id>::=<id>|<спис. id>,<id>
  19.  <id>::=<буква>|<id><буква>|<id><цифра>
  20.  <буква>::=a |…| Z
  21.  <відношення>::=<вираз><знак><вираз>
  22.  <знак>::= > | < | >= | <= | == | !=
  23.  <лог. вираз>::=<лог. множ>|<лог. вираз> && <лог. множ>
  24.  <лог. множ.> ::= <лог. додан.> | <лог. вираз> || <лог. додан.>
  25.  <лог. додан.>::= <лог. од.> | !<лог. од.> | [<лог. вираз>]
  26.  <лог. од.> ::= <відношення> | true | false |

Перетворена граматика:

  1.  <програма>::= program id> var <спис. огол> main{<спис. опер>}
  2.  <спис. огол>::=<огол.>;{<огол.>;}
  3.  <огол.>::=<тип>:<спис. id>;
  4.  <тип>::=double | int 
  5.  <спис. id>::=id{,id}
  6.  <спис. опер>::=<оператор>;{<оператор>;}
  7.  <оператор>::=<цикл> | <ум. оп> | <ввід> | <вивід> | <присвоєння>
  8.  <цикл>::=for(<присвоєння>;<лог. вираз>;<присвоєння>)<оператор>
  9.  <ум. оп>::=if (<відношення>) {<спис. опер>}
  10.  <ввід>::=read(<спис. id>)
  11.  <вивід>::=write(<спис. id>)
  12.  <присвоєння>::=id=<вираз>
  13.  <вираз>::=<додан.> {+<додан.> | -<додан.>}
  14.  <додан.> ::=<множн.> {*<множн.> | /<множн.>}
  15.  <множн.> ::= con | id | (<вираз>) |-<вираз>
  16.  <відношення>::=<вираз><знак><вираз>
  17.  <знак>::= > | < | >= | <= | == | !=
  18.  <лог. вираз>::=<лог. множ> { && <лог. множ>}
  19.  <лог. множ.> ::= <лог. додан.> | <лог. вираз> || <лог. додан.>
  20.  <лог. додан.>::= <лог. од.> | !<лог. од.> | [<лог. вираз>]
  21.  <лог. од.> ::= <відношення> | true | false |

Граматика мови створена під впливом мов Pascal та C , зокрема аналогічно першій програма починається з ключового слова program, для початку оголошення використовується слово var. Від мови С було перейнято дужки, що позначають початок і кінець програми, ключове слово main, конструкції умови, циклу та присвоєння.


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

Рисунок 1 –  Вікно редагування тексту, приклад роботи програми з помилками.

Рисунок 2 – Вікно результатів, приклад роботи  програми з помилками.

На рисунку 1 зображено вікно редагування вхідного тексту програми, в якому допущено декілька синтаксичних помилок. На рисунку 2 зображено вікно перегляду результатів. В полі помилок Error Log виведене повідомлення про першу знайдену в тексті помилку. Знайшовши її, аналізатор не припиняє перегляду тексту, проте повідомлення більше не виводимуться. Крім того, синтаксична помилка не впливає на побудову таблиць лексем, ідентифікаторів та констант

Рисунок 3 – Вікно редагування тексту, приклад роботи  програми без помилок

Рисунок 4 – Вікно результатів, приклад роботи  програми без помилок

На рисунку 3 зображено вікно редагування вхідного тексту програми, в якому відсутні помилки. В полі помилок Error Log вікна перегляду результатів (рисунок 4) виведене повідомлення про успішне завершення аналізу та відсутність помилок в коді.


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

1. Ахо, А. Компиляторы: принципы, технологии и инструменты. : Пер. с англ / А. Ахо, Р. Сети, Дж. Ульман. – М. : Издательский дом «Вильямс», 2003. – 768с. : ил. – Парал. тит. англ. : автор невідомий.

2. Конспект лекцій з курсу лінгвістичного забезпечення САПР


 

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

78436. ДОСЛІДЖЕННЯ КОМУТАЦІЙНИХ ПОЛІВ ТИПІВ Ч - Ч ТА «Ч-П-Ч» СИСТЕМИ МТ-20/25 643.5 KB
  Пристрій маркування комутаційного поля станції, призначений для організації з’єднувального тракту в комутаційному полі. Керує входами і виходами часових і просторових комутаторів та забезпечує комутацію каналів та ліній. В якості пристрою керування використовується мікропроцесор.
78437. Дослідження цифрового комутаційного поля (SN) системи EWSD 402.5 KB
  Мета роботи: Вивчити принципи побудови зєднувальних шляхів в ЦКП системи EWSD.1 У процесі самопідготовки вивчити призначення апаратних засобів ЦСК EWSD.2 Ознайомитися з варіантами побудови КП ЦСК EWSD.
78438. Цифрова система комутації EWSD 229.5 KB
  Цифровая электронная коммутационная система EWSD. Цифровая станция EWSD: Учебное пособие по курсу Системы коммутации для студ. План лекції Структура системи EWSD.
78439. Цифрова система комутації Alcatel 1000 E-10 862.5 KB
  Ця система побудована на відкритій архітектурі, в якій функції розділені між програмними та апаратними модулями, що зв’язані жорстко визначеними інтерфейсами. Програмні та апаратні модулі повністю незалежні один від одного.
78440. Цифрова система комутації МТ-20/25 162 KB
  Для звязку з різними АТС та вузлами необхідні спеціальні комплекти зєднувальних ліній. В АТСЕ типу МТ20 25 можуть включатися наступні типи ліній: абонентські лінії; лінії таксофонів міських і міжміських; зєднувальні лінії з установчо-виробничими АТС УВАТС; лінії від кабінних комутаторів міжміських переговорних пунктів із серійним шуканням по вихідному звязку; зєднувальні лінії з іншими АТС які існують на мережі. В АТСЕ забезпечується автоматична перевірка всього обладнання вимірювання електричних параметрів...
78441. Гасіння пожеж у театрально-видовищних установах 93.5 KB
  Особливості гасіння пожежі в сценічній частині. Особливості гасіння пожежі в глядацькому залі. ВСТУП Гасіння пожеж у видовищних установах повязане з необхідністю проведення рятувальних робіт особливо під час вистав.
78442. Гасіння пожеж у дитячих дошкільних та навчальних закладах 72 KB
  Особливості розвитку пожежі у дитячих та навчальних закладах. Гасіння пожеж у дитячих дошкільних та навчальних закладах. Будівлі шкіл шкілінтернатів та інших навчальних закладів будують з неспалимих матеріалів і П ступенів вогнестійкості висотою 35 поверхів.
78443. Гасіння пожеж у лікувальних закладах 75 KB
  Оперативнотактична характеристика лікувальних закладів Обстановка на пожежах у лікарнях зумовлюється конструкційними особливостями плануванням та ступенем вогнестійкості будівель горючим завантаженням а також наявністю великої кількості хворих людей різного віку їх фізичного та психічного стану. У багатоповерхових будівлях та будівлях підвищеної етажності влаштовують сходоволіфтові вузли де експлуатуються не тільки пасажирські ліфти але й ліфти для перевозу хворих на ношах операційних столах та возиках. На поверхах розміщуються...
78444. Гасіння пожеж у сільських населених пунктах 71.5 KB
  Особливості розвитку та гасіння пожеж у житловій зоні сільських населених пунктів. Вимоги безпеки праці під час гасіння. Основними вододжерелами для гасіння пожеж тут є річки ставки озера свердловини колодязі і т.