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


 

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

49314. Расчет параметров цифровых систем передачи непрерывных сообщений 181.84 KB
  Тип распределения СОДЕРЖАНИЕ Введение Распределение относительной среднеквадратичной ошибки ОСКО входных преобразований...
49315. Обоснование рациональной электротехнической службы в хозяйстве 340.98 KB
  Перечень оборудования по типовым проектам составляем на основании расчетной схемы силового и осветительного оборудования по объектам. В перечне указываем производительный объект, наименование установки, на которой имеется оборудование, условия эксплуатации этого электрооборудования, количество, тип силового и пускозащитного оборудования, мощность.
49316. Основы метода рентгенофотоэлектронной спектроскопии (РФЭС) 895.32 KB
  Анализ качественного и количественного состава поверхности. Определение химического состояния атомов поверхности. Химический сдвиг и определение химического состояния атомов на поверхности В результате этого взаимодействия с поверхности в общем случае вылетают четыре вида частиц электроны фотоны ионы и нейтральные атомы и молекулы.
49317. ФИЗИЧЕСКИЕ МЕТОДЫ ИЗМЕРЕНИЯ ВЯЗКОСТИ ЖИДКОСТИ 736.55 KB
  Изучением сопротивления перемещению вязкости коэффициента внутреннего трения и деформации вещества занимается наука реология методы которой получили широкое распространение как в исследовательской деятельности так и на производстве при решении технологических задач. Разработка газовых и газоконденсатных месторождений и перекачка нестабильных углеводородных...
49318. Расчет АЧХ, ФЧХ и переходной характеристики полосового фильтра 129.03 KB
  Техническое задание 3 АЧХ и ФЧХ Переходная характеристика Заключение Техническое задание Построить АЧХ ФЧХ и переходную характеристику цепи. Схема расчета АЧХ и ФЧХ Операторное передаточное сопротивление: где G =1 R Заменим p на jw АЧХ: ФЧХ: Подставим значения Найдем собственную частоту контура Определим характеристическое сопротивление Рассчитаем добротность Полоса пропускания Таблица 1. ФЧХ 0.
49319. Проект очистных работ для лавы 111.6 KB
  Поэтому проверим возможность применения механизированного комбайнового комплекса в условиях заданной лавы: При выборе механизированного комплекса следует учесть что вынимаемая мощность в данном случае будет складываться из мощности угля и мощности ложной кровли: где мощность пласта угля м; мощность ложной кровли м. В условиях данной лавы возможно применение следующих комбайновых комплексов: 1КМ88; 2КМ87УМА; 1КМ87УМВ; 2КМ87УМВ. при работе по простиранию падению восстанию 15 10 10 20 10 10 20 10 10 20 10 10 Устойчивость...
49320. Разработка программы на алгоритмическом языке программирования Си 195.01 KB
  Программа на языке СИ. Необходимо ответить на вопросы: “Что заданКакой должен быть получен результат†“Как получить результат†Задача моего варианта курсовой работы заключается в проверке истинности высказывания: Все цифры данного числа различныЭто значит что мне нужно используя знания полученные на курсах информатики а так же при необходимости используя дополнительную литературу составить программу на языке си которая могла бы определить все ли цифры различны в заданном трехзначном...
49321. Пароходик догоняет большой пароход 49.92 KB
  Целью работы также является проведение сравнительного анализа языков программирования. Сравнить языки потребуется как в общем, так и применительно поставленной задаче. Одной из подзадач является создание описание алгоритма программы и составление математической модели. Пароходы будут состоять из линий и окружностей. Для написания выбран язык программирования, среда Delphi 7.
49322. Моделирование логических игровых программ средствами Delphi 747.5 KB
  Объект исследования – применение среды программирования Borland Delphi с целью изучения возможности отображения графической информации, построения фракталов.