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


 

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

85025. Ураганы и бури, причины их возникновения, возможные последствия. Защита населения от последствий ураганов и бурь 33.76 KB
  Защита населения от последствий ураганов и бурь Цель урока. Сформировать у учащихся представление об опасности ураганов и бурь для жизнедеятельности человека. Дать информацию об основных мероприятиях проводимых в стране по защите населения от последствий ураганов и бурь. Последствия ураганов и бурь.
85026. Смерчи и защита населения от них 31.37 KB
  Сформировать у учащихся представления об опасности последствий смерча для безопасности жизнедеятельности человека. Обсудить рекомендации по действиям при угрозе и во время смерча. Рекомендации по действиям при угрозе и во время смерча. Показать строение смерча: вихрь тромб ядро воронка.
85027. Аварии на взрывопожароопасных объектах экономики Тамбовской области. Обеспечение защиты населения от последствий аварий на данных объектах 33.55 KB
  Аварии на взрывопожароопасных объектах экономики Тамбовской области. Систематизировать знания учащихся о взрыво и пожароопасных объектах познакомить их с возможными последствиями аварий на этих объектах и основными причинами их возникновения проиллюстрировать это на конкретном примере. Познакомить учащихся с общими мероприятиями проводимыми в нашей стране по защите населения от последствий аварий на взрыво и пожароопасных объектах а также с мероприятиями по повышению уровня безопасности функционирования взрыво и пожароопасных...
85028. Аварии на гидротехнических сооружениях и их последствия. Обеспечение защиты населения от последствий аварий 34.02 KB
  Аварии на гидротехнических сооружениях и их последствия. Сформировать у обучаемых общее представление о гидродинамической аварии возможных причинах ее возникновения и возможных последствиях. Гидродинамические аварии и причины их возникновения. Дать определение гидродинамической аварии.
85029. Оповещение и эвакуация населения в чрезвычайных ситуациях техногенного характера 32.61 KB
  Оповещение и эвакуация населения в чрезвычайных ситуациях техногенного характера Цели урока. Познакомить учащихся с организацией оповещения населения о чрезвычайных ситуациях техногенного характера. Познакомить учащихся с одной из основных мер по экстренной защите населения от поражающих факторов чрезвычайных ситуаций эвакуацией населения. Размещение эвакуированного населения.
85030. Мероприятия по инженерной защите населения от чрезвычайных ситуаций техногенного характера 30.68 KB
  Обобщить знания о защитных сооружениях гражданской обороны и их предназначении. Защитные сооружения гражданской обороны и их предназначение. Правила поведения укрываемых в защитных сооружениях гражданской обороны. Основные мероприятия инженерной защиты населения: укрытие людей в защитных сооружениях гражданской обороны и в приспособленных сооружениях подвальные помещения цокольные этажи подземные пространства объектов торговосоциального назначения; использование отдельных герметизированных помещений в жилых домах и общественных...
85031. Психологическая уравновешенность 30.75 KB
  Необходимость воспитания психологической уравновешенности в школьном возрасте. Основные направления воспитания психологической уравновешенности. При этом нередко появляются признаки эмоциональной психологической неустойчивости: колебание настроения без видимых причин сочетание повышенной чувствительности ранимости и подчеркнутой развязности и показной самоуверенности. Обсудить общие направления воспитания психологической уравновешенности: побороть в себе робость воспитать уверенность; постоянно работать над самосовершенствованием.
85032. Стресс и его влияние на человека 31.18 KB
  Стресс и его влияние на человека Цель урока. Познакомить учащихся с понятиями стрессовый фактор и стресс; проанализировать стадии стресса влияние сильного стресса на здоровье человека. Изучаемые вопросы Стрессовые факторы и стресс. Стадии стресса влияние сильного стресса на здоровье.
85033. Анатомо-физиологические особенности подросткового возраста 31.27 KB
  Познакомить учащихся с особенностями развития организма в подростковом возрасте обратить внимание на возможность появления функциональных расстройств в организме человека. Изучаемые вопросы Развитие человека в подростковом возрасте. Правила личной гигиены в подростковом возрасте. В подростковом возрасте могут возникнуть различные функциональные расстройства органов: повышение кровяного артериального давления сердцебиение учащение пульса иногда одышка головная боль.