16526

РАЗРАБОТКА И РЕАЛИЗАЦИЯ АЛГОРИТМА ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа № 3/4 РАЗРАБОТКА И РЕАЛИЗАЦИЯ АЛГОРИТМА ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА 2.1. Введение Цель работы: Ознакомиться с теоретическими и практическими основами построения блока лексического анализа компилятора Глава 1. Общая характеристика процесса ко

Русский

2013-06-22

61.5 KB

17 чел.

Лабораторная работа № 3/4

РАЗРАБОТКА И РЕАЛИЗАЦИЯ АЛГОРИТМА ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА

2.1.  Введение

Цель работы: Ознакомиться с теоретическими и практическими основами построения блока лексического анализа компилятора (Глава 1. Общая характеристика процесса компиляции и Глава 6. Проектирование лексического анализатора). Разработать алгоритм работы лексического анализатора (ЛА) и реализовать его в программе в упрощенном варианте.

Защита работы: Демонстрация работы программы, ответы на заданные теоретические вопросы  и вопросы по организации данных, построению алгоритма и реализации программы.

Литература:    1)  Основы теории построения компиляторов (Уч. пособие № 3236). Гл.1, 6.

  2)  Материалы к практическим занятиям. Тема 4, занятие 13.

2.2.  Задание к лабораторной работе

В соответствии с вариантом определяется условный мини-язык программирования, для которого необходимо создать ЛА. В задании (Таблица 1) дается примерное определение языка – определяются типы данных, операторы и операции, наличие массивов и функций. Обязательно должны быть предусмотрены комментарии. Стиль оформления (Pascal, C, Basic и т.д. или комбинированный) и все остальные детали (вид констант, заголовок программы, операторы объявления переменных, массивов, процедур, функций и т.д.) устанавливаются произвольно,  допустимо использование любых элементов сверх заданных.

Таблица 1.

Вар

Тип данных

Операторы

Операции

Доп. элементы

Реализация

1

integer,  string

Присваивания, if-then-else, goto

+  –  *  /  =  <>  <=   >=  >

массивы

Прямая программная

2

boolean, byte, word   (16-р.конст.)

Присваивания, if-then-else, for-do

+   –    *  /  or and  not

функции

Таблично-управляемая

3

integer, real

Присваивания, if-then, goto, case

+   –   *  /  < > =  <= >=  /=

процедуры

Прямая программная

4

real, string, byte

Присваивания, if-then-else, goto, f, wh orile

+   –   *  /   ^   <  >  =  /=

-

Таблично-управляемая

5

byte, word

  (16-р.конст.)

Присваивания, if-then-else, goto, for

+   –  *  /  **  <  >  =  not  

массивы

Прямая программная

6

integer, byte, word

  (16-р.конст.)

Присваивания, if-then-else, case,  repeat

+  *  /   

=  <>  <  <=   >=  >

-

Таблично-управляемая

7

integer, real, boolean

Присваивания, if-then-else, goto,  with

+   –    *  /  or and  not  < > =

записи

Прямая программная

8

integer, real

Присваивания, if-then-else,

goto, while

+  –  *  /  

=  <  <=   >=  >

массивы

Таблично-управляемая

9

real, string, byte

Присваивания, if-then-else, for

+  *  /   =   /=   <    >

Функции и процедуры

Прямая программная

10

integer, real

Присваивания, if-then-else,

goto, case, for, while

+  *  /  

=  <   >  

массивы

Таблично-управляемая

В  лабораторной работе:

1 часть

  •  должен быть коротко описан язык (так, что бы было ясно, как  на нем писать программы),
  •  даны  1-2  примера программ, включающих все характерные элементы языка,
  •  приведено формальное описание языка с использованием БНФ, РБНФ или СД.
  •  представлен граф распознавания ЛЕ программы ,

2 часть

  •  показаны таблицы ключевых слов и однолитерных разделителей,
  •  представлен интерфейс (схематично) программы,
  •  показан алгоритм (блок-схемы или псевдокод) выполнения лексического анализа.

После выполнения работы должно появиться:

  •  программа лексического анализатора,
  •  результаты работы анализатора (2-3 программы и их внутреннее представление).

2.3.  Примерная форма отчета по работе

 1) Задание к лабораторной работе

Вар

Тип данных

Операторы

Операции

Доп. элементы

Реализация

11

int, char  

Присваивания, if-else, goto

+  –  *  /  =  !=  <   <=  >  ++  – – 

массивы

Прямая программная

  1)  Описания мини-языка программирования

       {  ! ! ! ! ! ! !    ---  т е к с т  ---     ! ! ! ! ! !   }  

  2)  Пример программы.

 program  myPRG1;

  /* моя программа 1 */

  integer i, a, mmm[10];

  real S;

     begin

  S:=0;

  for  i:= 1 to 10 do

    S := S + a[i];

  writln (‘Сумма =’, S)

 end.

2а)  Формальное описания мини-языка программирования

       {  ! ! ! ! ! ! !    ---  т е к с т  ---     ! ! ! ! ! !   }

  3)  Граф распознавания лексических единиц 

       {  ! ! ! ! ! ! !     ---  рисунок  ---      ! ! ! ! ! !   }  

  4)  Таблицы ключевых слов и разделителей

       {  ! ! ! ! ! ! !    ---  таблицы  ---      ! ! ! ! ! !   }  

  5) Программа лексического анализатора

       {  ! ! ! ! ! ! !   ---  программа  ---   ! ! ! ! ! !   }  

  6) Результат работы анализатора

 K.5 program      

I.1 myPRG1

R.4 ;

 com /* моя программа 1 */

 K.4   integer

     I.2 i

R.2 ,

I.3 a

R.2 ,

I.4 mmm

R.7 [

C.1 10

R.8 ]

R.4 ;

    . . .

 R.2 end

R.9 .

         *)  другое возможное представление (построчное)

 program  myPRG1;

K.5  I.1  R.4

 /* моя программа 1 */

 com

 integer i, a, mmm[10];

 K.4  I.2  R.2  I.3  R.2  I.4  R.7  C.1  R.8  R.4

 . . .

 end.

 R.2  R.9

        **)  может быть выбран и иной вариант (например, в  две  колонки), но соответствие ЛЕ должно быть очевидно.

2.4. Контрольные вопросы

Теоретические

  1.  Что такое конечный автомат и как он задается ?.
  2.  Поясните кратко методику построения графа распознавания ЛЕ языка.
  3.  Что такое прямая программная реализация ЛА ?.
  4.  Что такое функциональная (таблично-управляемая) реализация ЛА ?
  5.  Охарактеризуйте кратко различные методы поиска в таблицах.
  6.  Поясните организацию хешированных таблиц.

Практические

  1.  Какие типы ЛЕ обычно выделяют в программе.
  2.  Что такое стандартное (внутреннее) представление программы.
  3.  Чем отличаются таблицы идентификаторов и констант от таблиц ключевых слов и разделителей.
  4.  Как проверить, является ли некоторый символ буквой (цифрой).
  5.  Как проверить, являются ли символы ЛЕ, собранные в буфере, ключевым словом.
  6.  Поясните реализацию фрагмента алгоритма в программе.

___ end ___


 

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

8166. Ціннісні виміри людського життя. Смерть і безсмертя 29.5 KB
  Тема уроку. Ціннісні виміри людського життя. Смерть і безсмертя. Мета:сформувати уявлення учнів про цінності та їх роль у житті людини ознайомити учнів з основними аспектами проблеми смерті та безсмертя як фінальних цінностей людини формуват...
8167. Почуття, інтелект, воля. Ідеали в житті людини 44 KB
  Почуття, інтелект, воля. Ідеали в житті людини. Мета: Розглянути поняття почуття, інтелект, воля, та проаналізувати ідеали в житті людини розвивати вміння критично аналізувати різні точки зору на певну проблему виховувати толерантне ставлення до п...
8168. Завершення І світової війни 33 KB
  Завершення І світової війни. Хоч головні битви розгорталися в 1918 р. на Західному фронті, історія розпорядилася так, що не вони завершили війну, а події на Східному фронті. Упродовж двох років у північній частині Греції англо-французькі війська без...
8169. Особа, суспільство, держава 31 KB
  Тема уроку. Особа, суспільство, держава. Мета: Навчити ліцеїстів розрізняти поняття людина, індивід, особистість, особа, громадянин. розвивати вміння висловлювати власне ставлення до проблеми виховувати почуття правової свідомості. Обладнання...
8170. Громадянство. Правова і соціальна держава 27 KB
  Тема уроку. Громадянство. Правова і соціальна держава. Мета уроку: визначити поняття громадянство, правова і соціальна держава розвивати вміння висловлювати власне ставлення до проблеми виховувати почуття правової свідомості. Обладнання: Дош...
8171. Культура Гетьманщини 15.54 KB
  Культура Гетьманщини 1648 pp. - період гетьманської держави, її очолюють високоосвічені, європейського рівня політичні й громадські діячі: П. Сагайдачний, Б. Хмельницький, І. Виговський, І. Мазепа. Вони докладають великих зусиль і кош...
8172. Феофан Прокопович - видатний діяч просвітництва і культури 15.29 KB
  Феофан Прокопович - видатний діяч просвітництва і культури Феофан Прокопович народився в Києві 1677 р. Рано втратив рідних, жив під опікою дядька, професора і ректора Києво-Могилянської академії. Дядько рано віддав хлопчика на навчання до Акаде...
8173. Козацькі Літописи 18.81 KB
  Козацькі Літописи Історії Запорозької Січі присвячено численні розвідки - від суто популяризаторських до капітальних праць. Різними дослідниками це явище висвітлюється по-різному: і як цілісний процес, і як окремі його складові чи персонали. Пр...
8174. Вплив української культури на розвиток культурних процесів Росії 18.05 KB
  Вплив української культури на розвиток культурних процесів Росії У козацьку добу Україна посідала чільне місце серед держав Східної Європи. Чигирин став центром, куди приїздили для політичних і ділових контактів посли Молдавії, Швеції, Валахії, Поль...