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


 

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

27636. Объект преступления - неприкосновенность компьютерной информации 46.5 KB
  информации на машинном носителе в электронновычислительной машине ЭВМ системе ЭВМ или их сети если это деяние повлекло уничтожение блокирование модификацию либо копирование информации нарушение работы ЭВМ системы ЭВМ или их сети. Под компьютером понимается электронновычислительная машина ЭВМ или в переводе на русский язык вычислитель. Под компьютеризацией понимается широкое внедрение ЭВМ компьютеров в различные сферы человеческой деятельности. Специалисты в области компьютерной техники могут незаконно вмешиваться в созданные...
27638. Общие начала назначения уголовного наказания. Обстоятельства, смягчающие и отягчающие наказание. Назначение наказания при наличии смягчающих обстоятельств 152.5 KB
  Общие начала назначения уголовного наказания. Назначение наказания при наличии смягчающих обстоятельств. Общие начала назначения наказания это принципиальные основные положения которыми должен руководствоваться суд при назначении наказания лицу признанному виновным в совершении преступления. Законодатель выделяет следующие основные начала назначения наказания: 1 наказание должно быть справедливымт.
27640. Понятие и характеристика убийства при отягчающих обстоятельствах (ч.2 ст. 105 УК) 32 KB
  Убийство при отягчающих обстоятельствах характеризуется наличием квалифицирующих признаков того или иного элемента состава преступления объекта субъективной объективной сторон. Квалифицирующие признаки объекта: это пункты а б в г ст. Для квалификации по п. Квация по п.
27641. Понятие квалификации преступлении, ее этапы. Конкуренция уголовно-правовых норм, ее виды 30 KB
  Квалифицировать преступления значит дать ему юридическую оценку указать уголовноправовую норму предусматривающую это деяние. В юридических документах квалификация преступления выражается в виде ссылки на соответствующую статью УК или несколько статей. Квалификация преступления это точная уголовноправовая оценка конкретного общественно опасного деяния. Понятие квалификации имеет два взаимосвязанных значения: 1 процесс установления признаков состава преступления в деянии лица; 2 результат этого процесса т.
27643. Понятие некорыстных преступлений против собственности, их виды и юридическая характеристика 32.5 KB
  167 УК РФ Объект преступления отношения собственности. Объективная сторона преступления характеризуется: уничтожением или повреждением чужого имущества; причинением значительного ущерба собственнику владельцу. Субъективная сторона прямой мотивы и цель могут быть разнообразными; могут выражаться например в стремлении скрыть следы совершенного ранее преступления или из мести из ревности за исключением тех которые превращают деяние в преступление иного рода терроризм организация и участие в массовых беспорядках диверсия...
27644. Понятие объекта преступления в уголовном праве. Классификация объектов преступления по вертикали и горизонтали. Многообъектные преступления 35 KB
  Классификация объектов преступления по вертикали и горизонтали. Многообъектные преступления. Соотношение объекта и предмета преступления.