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 ___


 

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

10027. Оконечные усилительные каскады 1.1 MB
  Тема № 3. Оконечные усилительные каскады Занятие № 1. Принципы построения и функционирования каскадов оконечного усиления Учебные методические и воспитательные цели: 1. Изучить принципы построения оконечных усилительных каскадов. 2. Со...
10028. Преобразователи частоты. Общие принципы преобразования частоты 950.5 KB
  Тема 4. Преобразователи частоты Занятие 1. Общие принципы преобразования частоты Учебные методические и воспитательные цели: 1. Изучить сущность принципов преобразования частоты. 2. Изучить схемы и принципы работы диодных преобразователей ...
10029. Функциональные устройства на операционных усилителях 810.5 KB
  Тема 5. Функциональные устройства на операционных усилителях Занятие 1. Аналоговые электронные устройства на операционных усилителях Учебные методические и воспитательные цели: 1. Изучить основные свойства операционных усилителей ОУ...
10030. Роль и место дисциплины в подготовке офицера связиста 236.5 KB
  Вводная лекция Учебные методически развивающие и воспитательные цели: 1. Уяснить роль и место дисциплины в подготовке офицера связиста изучить основные определения классификацию технические показатели и характеристики аналоговых электронны
10031. Проектирование аналоговых устройств 89.5 KB
  Проектирование аналоговых устройств Лекция Тема КР. Проектирование аналоговых устройств. Занятие № 1. Последовательность выполнения курсовой работы. Литература: Кочанов Н.С. и др. Линейные радиотехнические устройства...
10032. Роль криптологических методов и систем криптографической защиты информации в современном обществе 32.5 KB
  Роль криптологических методов и систем криптографической защиты информации в современном обществе. Жизнеспособность общества все в большей мере определяется уровнем развития информационной среды. Информация играет все более весомую роль в функционировании государс
10033. Модель Шеннона системы секретной связи 34.5 KB
  Модель системы секретной связи К.Шеннона была предложена в его работе Теория связи в секретных системах опубликованной в 1949 году. Модель Шеннона
10034. Задачи криптологии, которые привели к асимметричным шифрам 39 KB
  Задачи криптологии которые привели к асимметричным шифрам. При практическом использовании модели Шеннона необходимость реализации защищенного канала для ключевого обмена порождает так называемую проблему безопасного распространения ключей. Кроме того при исполь...
10035. Элементарные шифры. Основные типы шифров: потоковые и блочные шифры 35.5 KB
  Элементарные шифры. Шифр замены шифр подстановки метод шифрования при котором каждый знак исходного текста взаимнооднозначно заменяется одним либо несколькими знаками некоторого алфавита. Шифр простой замены заменяет каждый знак входного алфавита на некоторый зн