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


 

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

47035. Проблема предметной деятельности и ее развития в развития в раннем детстве 47 KB
  Основное противоречие возраста: способ действия с предметом образец действия принадлежит взрослому а ребенок в то же время должен выполнять индивидуальное действие. Ведущий тип деятельности: предметная деятельность направленная на усвоение общественно выработанных способов действия с предметами. Цель возникает только в результате осуществления самого предметного действия. только после того как ребенок выпьет из чашки воду у него возникает цель пить из чашки воду Структура предметного действия: Действие состоит из ориентировочной и...
47036. Теория налогообложения 47.36 KB
  Теория Стоимость основных средств безвозмездно полученных от других предприятий налогом на прибыль: облагается не облагается если оборудование получено для разработки нефтяных и газовых месторождений не облагается если основные средства переданы с баланса на баланс предприятий потребительской кооперации по решению собственников не облагаются в любом случае Налоговая база по налогу на прибыль исчисляется: @нарастающим итогом с начала года по итогам каждого квартала по итогам года нарастающим итогом с начала каждого квартала ежемесячно...
47037. Определение адекватности построенной модели регрессии 47.5 KB
  Анализ остаточной компоненты остаточного ряда позволяет оценить качество полученнного уравнения регрессии. Модель считается адекватной исследуемому процессу если: 1 математическое ожидание значений остаточного ряда близко или равно нулю; 2 значения остаточного ряда случайны; 3 независимы; 4 подчинены нормальному закону распределения. Равенство нулю математического ожидания ряда остатков означает выполнение следующего соотношения: Однако в случае применения метода наименьших квадратов такая проверка является излишней поскольку...
47038. Права особи в Україні 47.5 KB
  Особисті права особи в Україні Громадянські та політичні права належать до так званого “першого покоління†прав людини. Саме ці права в першу чергу були проголошені французькою “Декларацією прав людини і громадянина†і “Біллем про права†який увійшов до складу Конституції США. Особисті громадянські права визначають свободу людини в сфері особистого життя його юридичну захищеність від будьякого незаконного втручання. До громадянських прав відноситься право приватної власності право на охорону сім’ї материнства і дитинства...
47041. Дистилляция в коньячном производстве. Её особенности при получении коньячного спирта. Используемое оборудование. Классический способ. Факторы, обуславливающие состав примесей различных фракций 48.12 KB
  Дистилляция вина – сложный физикохимический процесс во многом определяющий качество будущего коньяка. Классическая технология коньяка Шаранты предусматривает двукратную перегонку вина на кубовых аппаратах получивших название шарантских и выдержку полученного спирта дистиллята в дубовых бочках. В эти реакции вовлекаются как нелетучие соединения вина углеводы азотистые фенольные соединения нелетучие кислоты и др. В кубе во время кипячения вина происходит образование альдегидов спиртов кислот эфиров летучих фенолов и других...
47042. Трудовые ресурсы и человеческий капитал. Экономический рост – обобщающий результат функционирования национальной экономики 50.17 KB
  С периодом в несколько лет или десятилетий фаза экономического роста сменяется фазой снижения показателей. Факторами экономического роста именуются те явления и процессы которые определяют масштабы роста настоящего размера производства способности повышения эффективности и свойства роста. На макроэкономическом уровне ведущими показателями динамики экономического роста являются: рост размера ВВП ВНП либо НДС темпы роста ВВП ВНП и НД в расчете на душу населения; темпы роста промышленного производства в целом по главным отраслям и на душу...
47043. Макроэкономическое равновесие на товарном рынке. Модель совокупного спроса и совокуп.предложения 49.14 KB
  Совокупный спрос зависят от уровня цен размера доходов населения намерений на будущее налогов правительственных расходов и денежного предложения. P уровень цен товаровQ реальный объем ВНП. Эффект процентной ставкиэффект богатства и дохода эффект импортных закупок. эффектом процентной ставки повышение цен увеличение спроса на деньги рост процента за кредит на денежном рынке: домохозяйства сокращают закупки потребительских благ чтобы меньше платить за кредит; фирмы уменьшают закупки инвестиционных товаров так как для многих...