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


 

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

48401. Професійне спілкування. Вимоги до професійного спілкування 367.5 KB
  Професійне спілкування сприймається як усний мовний контакт між людьми, що зв’язані інтересами справи і мають повноваження для встановлення ділових контактів, вирішення ділових проблем і здійснення конкретних підходів до їх вирішення. Тобто ділова розмова – це «дракон із чотирма головами»
48402. Основи промислової електроніки і МПТ 7.77 MB
  Курс лекцій написаний для студентів спеціальності “Монтаж і експлуатація електроустаткування підприємств і цивільних споруд” денної форми навчання. Обсяг кожної лекції розрахований на два академічні години. Кожну лекцію можна вивчати незалежно від попередньої. Лекції містять ретельно підібраний матеріал, мають велику кількість ілюстрацій, електричних і логічних схем. Дано параметри напівпровідникових приладів і мікросхем, їх позначення.
48403. Необхідність, сутність і функції фінансів 48.11 KB
  Юридичні особи діяльність яких пов’язана з наданням професійних послуг на ринку цінних паперів до них відносяться підприємства що спеціалізуються на здійсненні посередницької діяльності по випуску та розміщенню цінних паперів виконуючи операції на фондовому ринку за дорученням своїх клієнтів. Фінанси підприємства. Суб’єктами господарювання є: Господарські організації – це юридичні особи створені відповідно до цивільного кодексу України державні комунальні та інші підприємства створенні відповідно до господарського кодексу України а також...
48404. Предмет фінансової науки. Фінансові категорії 1.04 MB
  Тут зосереджувалася основна маса доходів у бюджеті централізувалося більше 50 валового внутрішнього продукту і до 75 національного доходу а без асигнувань з бюджету практично неможливим було функціонування значної частини підприємств установ соціальнокультурної сфери будівництво житла існування житловокомунального Господарства тощо. Значення державного бюджету обумовлено не лише обсягом коштів зосереджених у ньому а й найбільш розвиненою системою взаємозв’язків з усіма іншими ланками та сферами. до Європейської хартії про місцеве...
48405. СТАТЬ І СЕКСУАЛЬНІСТЬ: ПСИХОЛОГО-ПЕДАГОГІНИЙ ПОГЛЯД 584 KB
  Статева соціалізація особистості оволодіння підростаючим поколінням нормами поведінки з представниками протилежної статі підготовка молоді до інтимних стосунків створення сімї та виховання дітей залишалась у тіні. Відсутність системи статевої просвіти серед дітей та юнацтва нестача висококваліфікованих педагогів з питань сексології психології статі брак наукової та науковопопулярної літератури з питань статі шлюбу та сімї негативно позначаються на засвоєнні учнями норм поведінки та самовизначенні особистості у складних питаннях...
48406. Функціонування Internet: організація, структура, методи 335.69 KB
  Еталонна модель ISOOSI Сучасні мережі побудовані за багаторівневим принципом. Для роботи мереж необхідна множина різноманітних протоколів: наприклад таких що керують фізичним зв'язком встановленням зв'язку по мережі доступом до різноманітних ресурсів і т. Він відповідає за правильну передачу даних пакетів на ділянках між безпосередньо пов'язаними елементами мережі. Цей рівень користується можливостями наданими йому рівнем 2 для забезпечення зв'язку двох будьяких точок у мережі.
48407. Теоретичні та методологічні засади комунікації і комунікаційних процесів 467.76 KB
  Теоретичні та методологічні засади комунікації і комунікаційних процесів Теорія комунікації як наукова дисципліна Основні визначення теорії комунікації. Предмет теорії комунікації. Закони теорії комунікації.
48408. Міжнародна економіка 30.64 KB
  Тема Агенти відкритої економіки беруть участь в міжнародному обміні товарів і послуг переміщенні грошей капіталу і робочої сили між країнами. Мезорівень охоплює економічні зв’язки між регіонами галузями міжгалузевими комплексами окремих країн. Світовий ринок – це сфера стійких товарногрошових відносин між країнами які базуються на міжнародному поділі праці та інших факторів виробництва. Світове господарство – це сукупність взаємодіючих національних економік всіх країн світу пов’язаних між собою мобільними факторами виробництва.
48409. Основи мотиваційних процесів 42.13 KB
  Маніпулювання – приховане спонукання іншої людини, прийняття рішень, до переживання певних станів, і виконання необхідних для ініціатора цілей. Стимулювання – предявлення зовнішнього фактору, з метою посилення і прийняття мисленнєвих, емоційних і поведінкових реакцій.