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


 

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

38631. «Облачные» ресурсы 37.21 KB
  Одним из следствий процесса глобализации и интеграционных процессов стало появление «облачных» технологий, что позволяет пользователю не быть привязанным к географической точке и активизировать процесс обмена даже весьма большими объемами информации.
38632. МОДЕРНИЗАЦИЯ ТЕПЛОФИКАЦИОННОЙ УСТАНОВКИ ПАРОВОЙ ТУРБИНЫ Т-100-130 УРАЛЬСКОГО ТУРБИННОГО ЗАВОДА 277.5 KB
  Подогрев обратной сетевой воды производится в ПСГ1 и ПСГ2 . В зимнее время для подогрева воды можно использовать также встроенный в конденсатор выделенный пучок. При такой схеме подача циркуляционной воды в конденсатор сокращается и вакуум в нём ухудшается. Целью модернизации ТФУ является повышение термического КПД паровой турбины за счет увеличения температуры обратной сетевой воды на входе в ПСГ1 ПСГ2 что ведет к уменьшению расхода греющего пара в них и к уменьшению расхода топлива на его генерацию.
38633. Підвищення енергоефективності очистки стоків тваринницьких ферм 1.55 MB
  1 Визначення виходу біогазу.4 Визначення виходу біогазу в залежності від циклу бродіння і кількість енергії біогазу даного підприємства .6 Визначення енергії товарного біогазу і коефіцієнту товарності 2.1 Дослідження залежності виходу біогазу від тривалості циклу бродіння.
38634. Проект производственно-отопительной котельной 4.74 MB
  Характеристика исходной воды жесткость общая мгэкв кг___________________________________________ жесткость карбонатная мгэкв кг______________________________________ содержание ионов натрия____________________________________________ РАСЧЕТНО ПОЯСНИТЕТЕЛЬНАЯ ЗАПИСКА Раздел 1. Основной частью её является собственно паровой котел в котором осуществляется превращение воды в насыщенный пар. Подачи и сжигания топлива; очистки химической подготовки и деаэрации воды; теплообменные аппараты различного назначения; насосы исходной сырой воды...
38636. Мероприятия по улучшению финансово-экономического состояния ООО «Мис» 2.82 MB
  Теоретические основы анализа финансовоэкономической деятельности предприятия. Сущность анализа финансового состояния предприятия.2 Информационная база анализа финансового состояния предприятия.3 Методика анализа финансовоэкономической деятельности предприятия.
38637. Транскриптомный анализ генов контроля генеза митохондрий и реактивности иммунной системы при действии адаптогенов 198.5 KB
  В соответствии с вышесказанным, в планируемой работе, с целью поиска подходов к специфической модуляции гена PGC-1α, мы планировали решение серии взаимосвязанных задач методического и методологического плана. В частности, предполагалось освоение методик культивирования клеток человека для постановки in vitro экспериментов
38638. Использование инструментов интегрированных маркетинговых коммуникаций для продвижения туристского маршрута (на примере турфирмы «Чудесный отдых») 548.5 KB
  2 Специфика использования инструментов ИМК в турбизнесе для формирования позитивного имиджа компании [2] 2 Анализ деятельности туристского предприятияООО Чудесный Отдых [2. Объектом исследования выбрано туристическая фирма Чудесный отдых и его деятельность по продвижению туристических маршрутов. Цели и задачи: разработка рекомендаций для туристической фирмы Чудесный отдых для более эффективного продвижения туристических маршрутов при помощи интегрированных маркетинговых коммуникаций; провести анализ литературы по проблемам...