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 ___


 

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

3147. Принципы уголовного законодательства: понятие, система, проблемы законодательной регламентации 800 KB
  Принципы уголовного законодательства: понятие, система, проблемы законодательной регламентации Предисловие До Уголовного кодекса РФ (далее - УК РФ) 1996 года ни один уголовно-правовой акт не содержал норм, закрепляющих принципы уголовного законодате...
3148. Реструктуризация и санация предприятия 1.38 MB
  В учебном пособии рассмотрены основные аспекты комплексной программы реструктуризации и санации, сущность и задачи санационной возможности, причины возникновения финансовой несостоятельности и банкротства предприятий. Последовательно раскрываются...
3149. Юридическая психология 1.28 MB
  Мы начинаем изучать курс «Юридическая психология». Эта отрасль психологической науки призвана внести значительный вклад в решение многопрофильных задач укрепления правовой основы российского государства и общества....
3150. Автомобили. Теория 3.6 MB
  Эксплуатационные свойства АТС Развитие науки об эксплуатационных свойствах АТС. Роль русских ученых в развитии науки о законах движения АТС. Основные эксплуатационные свойства и их определения. Условия эксплуатации АТС. Чуть-чуть...
3151. Поведение потребителя микроэкономический анализ 460 KB
  Учебное пособие соответствует программе курса по экономической теории и раскрывает вопросы теории поведения потребителя. В каждом разделе учебного пособия рассматриваются вопросы, ориентирующие студентов и слушателей на изучение вопросов с помощью п...
3152. Сварочные работы 243.5 KB
  Лекция 1. Механизация и автоматизация сборочных работ. Совершенствование сборочного производства. Технико-экономические показатели сборочного процесса. Совершенствование сборочного производства. Машиностроение призвано полностью ос...
3153. Мировая экономика. Мировое хозяйство и его структура 1.25 MB
  Современная международная экономика представляет собой динамично развивающуюся сложно-структурированную систему, главной отличительной особенностью и объективной тенденцией которой является глобализация мирохозяйственных отношений...
3154. Мировая экономика и этапы ее развития 453 KB
  Тема 1. Мировая экономика: сущность, структура, тенденции развития Вопросы: Мировая экономика и этапы ее развития. Международное разделение труда (МРТ) – основа мировой экономики. Современные тенденции в развитии мировой эконо...
3155. Особенности развития скоростно-силовых качеств баскетболиста 162.5 KB
  Введение Баскетбол — популярная спортивная игра. За свою более чем вековую историю он снискал огромное число почитателей во всем мире. Присущие ему высокая эмоциональность и зрелищность,  многообразие проявления физических качеств и двигат...