16526

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

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

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

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

Русский

2013-06-22

61.5 KB

16 чел.

Лабораторная работа № 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 ___


 

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

31752. ФІНАНСОВІ ПОСЛУГИ З перейняття РИЗИКУ 119.5 KB
  ФІНАНСОВІ ПОСЛУГИ З перейняття РИЗИКУ 1. Ймовірніснопсихологічні аспекти проблеми ризику в економіці 2. Місце валютних ризиків в системі комерційних ризиків. Підходи до вибору стратегії захисту від валютних ризиків 3.
31753. ІНФРАСТРУКТУРА РИНКУ ФІНАНСОВИХ ПОСЛУГ 108.5 KB
  ІНФРАСТРУКТУРА РИНКУ ФІНАНСОВИХ ПОСЛУГ 1. Поняття та елементи ринкової інфраструктури ринку фінансових послуг 2. Розміщення інфраструктури фінансового ринку: аналітичний аспект 3. Сегментний аналіз розвитку ринку фінансових послуг 4.
31754. ДЕРЖАВНЕ РЕГУЛЮВАННЯ ОСНОВНИХ СЕГМЕНТІВ 107 KB
  ДЕРЖАВНЕ РЕГУЛЮВАННЯ ОСНОВНИХ СЕГМЕНТІВ РИНКУ ФІНАНСОВИХ ПОСЛУГ 1. Необхідність державного регулювання ринку фінансових послуг на етапі становлення його функціональної системи 2. Національний банк як орган державного регулювання ринку фінансових послуг 3. Методи регулювання банківської діяльності 4.
31757. ПОНЯТТЯ І КЛАСИФІКАЦІЯ ФІНАНСОВОГО ПОСЕРЕДНИЦТВА 108.5 KB
  Загальні правові засади у сфері надання фінансових послуг здійснення регулятивних та наглядових функцій за діяльністю з надання фінансових послуг встановлює Закон України Про фінансові послуги та державне регулювання ринків фінансових послуг та інші закони України з питань регулювання ринків фінансових послуг а також прийняті згідно з цими законами нормативноправові акти. При укладенні договору юридична або фізична особа мають право вимагати у суб'єкта підприємницької діяльності надання балансу або довідки про фінансове становище...
31758. ФІНАНСОВІ ПОСЛУГИ НА ФОНДОВОМУ РИНКУ 63.5 KB
  Біржові операції з цінними паперами 7. Саморегулівна організація професійних учасників фондового ринку неприбуткове об’єднання учасників фондового ринку що провадять професійну діяльність на фондовому ринку з торгівлі цінними паперами управління активами інституційних інвесторів депозитарну діяльність діяльність реєстраторів та зберігачів утворене відповідно до критеріїв та вимог установлених Державною комісією з цінних паперів та фондового ринку. Професійна діяльність на фондовому ринку діяльність юридичних осіб з надання...
31759. Содержание и значение Федерального закона «О бухгалтерском учете» 37.5 KB
  Указанный Закон имеет большое значение для развития бухгалтерского учета в стране поскольку: а устанавливает единые правовые и методологические основы организации и ведения бухгалтерского учета; б повышает юридический статус норм бухгалтерского учета для коммерческих и некоммерческих организаций; в закрепляет обязанность юридических лиц вести бухгалтерский учет; г повышает статус норм бухгалтерского учета до уровня статуса норм другого законодательства. В I разделе Общие положения дано определение сущности бухгалтерского учета названы...
31760. Подготовка и содержание общего плана и программы аудита 38 KB
  Исходя из вышеизложенного выделяются ключевые принципы планирования аудита. Планирование и достижение наибольшей эффективности аудита реализация общей цели и задач проверки акцентирование внимания на главных проблемах что достигается в частности рациональной расстановкой специалистов участвующих в проверке с целью избежания по возможности дублирования выполняемых ими функций с учетом уровня квалификации и компетентности каждого специалиста аудитора ассистента эксперта в определенных вопросах и оформляется календарным графиком...