42367

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

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

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

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

Украинкский

2013-10-29

370 KB

9 чел.

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

НТУУ «КПІ»

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

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

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

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

Виконав

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

групи ТР-91

Лисий А.

Перевірила

Третяк В.А.

Київ – 2011


Вступ

Завданням лексичного аналізатора є розбивання вхідного коду програми на окремі частини: роздільники, зарезервовані слова, ідентифікатори та константи, побудова вихідних таблиць лексем, констант та ідентифікаторів.

Для даного випадку Л.А. має також перевіряти можливі помилки при написанні прорами такі як дублювання в оголошенні ідентифікаторів та використання необ’явлених ідентифікаторів.

Результати роботи Л.А. подаються у вигляді файлів.


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

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

  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 |

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

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

Таблиця лексем

Лексема ID

program  0    

var         1    

double    2    

int     3    

main   4    

{       5    

}       6    

read    7    

write          8    

for     9    

if      10   

,       11   

:       12   

;       13   

+       14   

-       15   

*       16

/       17   

Лексема ID

=       18   

(       19   

)       20   

>       21   

<       22   

>=      23   

<=      24   

==      25   

!=      26   

&&      27   

||        28   

!       29

[ 30

] 31  

true    32   

false          33

id 34

con 35

Нижче наведено приклади роботи програми

1.  Якщо в початковому коді були допущені такі помилки як дублювання ідентифікаторів при оголошенні або використання неоголошеного ідентифікатора (рисунок 1, наявні обидві вищевказані помилки), тоді в файл ErrorLog.txt будуть занесені відповідні записи(рисунок 3). На виході програми формується файл LexTable.txt з таблицею лексем (рисунок 2). Лексеми, в яких було допущено помилку не вносяться до таблиці, при цьому розбір коду продовжується. Крім вищевказаних файлів додатково створюється таблиця констант та ідентифікаторів (рисунок 3). Лексеми з помилками в них також не заносяться.

Рисунок 1-Текст програми.

Рисунок 2-Вихідна таблица лексем.

Рисунок 3-Таблиці индентификаторів, констант і лог помилок.

2. При відсутності в початковому коді помилок (рисунок 4) в файл ErrorLog.txt не буде занесено жодного запису (рисунок 6), при цьому таблиця лексем в файлі LexTable.txt (рисунок 5) вміщуватиме всі без виключення знайдені лексеми. Таблиці констант та ідентифікаторів також не буде відсутніх елементів (рисунок 6), на відміну від випадку з помилками (рисунок 3).

Рисунок 4-Код програми.

Рисунок 5-Вихідна таблиця лексем.

Рисунок 6-Таблиці идентификаторів, констант і лог помилок.


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

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


 

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

2320. Аналіз солоності вод світового океану 790.9 KB
  Мета: встановити особливості хімічного складу океанської води, її солоності та закономірності розподілу солоності у Світовому океані. Завдання: ознайовитися з відмінностями у хімічному складі річкової та океанської води, визначити вплив солоності на замерзання води, дати просторовий і генетичний аналіз розподілу солоності по поверхні океану та з глибиною.
2321. Понятие и структура теории управления и власти 1.5 MB
  Деятельность человека и потребность в управлении. Содержание понятия управление. Содержание понятия теория управления и ее основные категории. Структура теории управления. Проведение экспертиз деятельности органов власти. Изучение статистических показателей деятельности органов власти.
2322. Токоприемник и штангоуловитель 586.15 KB
  Общая характеристика троллейбусов. Организация технического обслуживания и ремонта машин. Основная задача городского пассажирского транспорта заключается в бесперебойном обеспечении трудовых, деловых и культурно-бытовых поездок населения. Массовые перевозки в Минске осуществляют метрополитен, трамвай, автобусы и троллейбусы.
2323. Double pipe heat exchangers 319.5 KB
  The double pipe heat exchangers are quite simple exchangers for analysing. There are two possibilities: the use of a counter flow or parallel flow. In figure 1.2 we can see the development of the temperatures.
2324. Становление производящего хозяйства 91.61 KB
  Зарождение земледелия и животноводства. Человек начинает обрабатывать медь. Распространение производящего хозяйства по всей Западной Азии, проникновение его в Европу и Африку. Малая Азия в древности. Цивилизации древней Индии и Ирана.
2325. Урок английского языка 39.78 KB
  Найдите перевод слов списка А в списке В. Назовите главные и второстепенные члены подчеркнутых в тексте предложений и укажите части речи, которыми они выражены. Найдите в тексте прилагательные в превосходной степени и переведите их. Какие времена использованы в тексте.
2326. Облік грошових коштів на рахунках в банку 23.72 KB
  Мета практичного заняття: закріплення теоретичних знань з організації обліку грошових коштів на рахунках в банку в національній та іноземній валюті, порядком відкриття рахунків, набуття практичних навичок по оформленню банківських платіжних документів, опрацювання виписки банку та заповнення Журналу-ордеру № 1 с.-г. та відомість 1.2 с.-г.
2327. Так кто же такой социолог и что им движет 22.14 KB
  Социолог, тот человек, который воздерживается от нормативных суждений. Он никогда не должен давать оценки – это хорошо, а это - плохо. Никаких моральных оценок, никаких оценок в категории. Только беспристрастная фиксация действительности – того что есть.
2328. Адміністрування податків 20.07 KB
  Сутність адміністрування податків. Види штрафних санкцій за порушення податкового законодавства та порядок їх нарахування