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


 

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

72214. Методика проверки правильности исчисления ряда федеральных налогов 95.5 KB
  Изучить проверку правильности исчисления и уплаты налогов и сборов за пользование природными ресурсами Определить проверку правильности исчисления и уплаты социальных взносов во внебюджетные фонды Изучить проверку правильности исчисления и уплаты государственной пошлины...
72215. Методика проверки правильности исчисления и уплаты региональных и местных налогов 182 KB
  Учебные и воспитательные цели: Определить порядок проверки исчисления и уплаты транспортного налога Изучить порядок проверки исчисления и уплаты налога на игорный бизнес Определить порядок проверки исчисления и уплаты земельного налога Изучить порядок проверки исчисления...
72216. Формы и методы налогового контроля 192.5 KB
  Предусмотрены следующие формы налогового контроля: налоговые проверки; получение объяснений налогоплательщиков налоговых агентов и плательщиков сбора; проверка данных учета и отчетности; осмотр помещений и территорий используемых для извлечения дохода прибыли; другие формы предусмотренные НК РФ.
72217. Камеральная налоговая проверка 76 KB
  Учебные и воспитательные цели: Определить организацию камеральной налоговой проверки Изучить Этапы и сроки проведения камеральной проверки Определить мероприятия проводимые в ходе камеральной проверки. Организация камеральной налоговой проверки.
72218. СТАНОВЛЕНИЕ ВЕЛИКОРУССКОЙ ГОСУДАРСТВЕННОСТИ ХIV – ХVI вв 340.5 KB
  За экономическим объединением следовало политическое: обострялись противоречия между феодальной знатью и бюргерами социальной опорой центральной власти стремящейся ликвидировать феодальные привилегии этой знати и объединить раздробленное социально-политическое пространство в единое государство.
72219. Ресничное тело 61.5 KB
  Тело с поверхности покрыто эпителием который представлен двумя слоями: Кубические клетки – лежащие на базальной мембране и содержащие пигмент. Призматические клетки наружный слой – клетки без пигмента они вырабатывают жидкость передней и задней камер. Клетки эпителия формируют неоптическую часть сетчатки.
72220. Центральная нервная система. Кора больших полушарий головного мозга. Цитоархиетектоника слоев коры больших полушарий. Нейронный состав. Характеристика пирамидный нейронов 47.5 KB
  Пирамидные нейроны. Крупные клетки, перикарионы размером 10-130 мкм. Клетка имеет верхушечный дендрит, который направлен в сторону молекулярного слоя; боковые отростки – дендриты; от основания идет длинный аксон – будет двигательным нервным волокном (начало образования пирамидного тракта).
72221. Органы чувств. Первично-чувствующие. Органы зрения. Общий план строения глазного яблока. Строение задней стенки глаза. Нейронный состав и глиоциты. Орган обоняния. Локализация. Разновидности клеток 59.5 KB
  Первично-чествующие – относится орган зрения и обоняния, рецепцию в органах осуществляют нервные клетки (нейросенсорные); дендриты которых имеют приспособления для улавливания молекул пахучих веществ и кванта света. Развиваются органы из элементов нервной пластинки.
72222. Основные этапы истории СССР (1945 – 1985 гг.) 53.5 KB
  После войны состояние экономики было очень тяжелым. Страна утратила 1/3 своего национального богатства. Было разрушено 1710 городов и более 70 тыс. сел и деревень, 31850 промышленных предприятий, 1135 шахт, 4100 ж/д станций, 25 млн. человек лишились жилья. Главная задача – восстановление народного хозяйства.