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 ___


 

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

48292. Множества. Число элементов множества. Подмножество 3.84 MB
  Подмножество. Задачи: образовательные: познакомить детей с понятиями множество элемент множества подмножество; научить определять число элементов множества; учить определять принадлежность элементов к заданному множеству. И сегодня мы познакомимся с понятием множество. Определение понятия множество.
48293. Теория финансов 453.62 KB
  Объектом финансовых отношений является валовой внутренний продукт то есть стоимость товаров и услуг изготовленных субъектами экономических отношений в сфере материального и невещественного производства за определенный период времени. Субъектами финансовых отношений выступают: государство; юридические лица; физические лица. Контрольная функция финансов предопределяется объективно присущей им способностью количественно отображать движение финансовых потоков и обеспечивать контроль за соблюдением пропорций в распределении валового...
48295. Русский язык. Грамматическое учение о слове 37.5 KB
  Смысловая структура слова. Понимание категории слова и содержание категории слова исторически менялись. Структура слова неоднородна в языках разных систем и на разных стадиях развития языка. Лингвисты избегают давать определение слова или исчерпывающее описание его структуры ограничиваясь лишь описанием некоторых внешних фонетических или внутренних грамматических или лексикосемантических признаков слова.
48296. ФИЗИКА ЭЛЕКТРОМАГНЕТИЗМА 2.28 MB
  В пособии рассматриваются в последовательном порядке различные состояние электромагнитного поля и его различные физические проявления в стационарных и нестационарных условиях а так же его релятивизм. Взаимодействие электромагнитного поля с веществом рассмотрено как взаимодействие с частицами и как взаимодействие со сплошной средой. Состояние самого электромагнитного поля и важнейшие особенности его взаимодействия с веществом рассматриваются в пособии на основе фундаментальных законов главным образом на основе уравнений Максвелла и законов...
48297. Предмет электродинамики 2.88 MB
  Полярные системы связанных зарядов В полярной системе заряды противоположных знаков разобщены а сама система электронейтральна. Носителями полярных зарядов могут быть частицы вещества атомы молекулы элементы кристаллической решётки а также макроскопические тела. Главной характеристикой полярной системы является её электрический момент . Это векторная величина через которую выражается взаимодействие полярной системы с электрическим полем.
48298. Економіка підприємства 1.43 MB
  Інноваційноінвестиційна діяльність підприємства. Витрати підприємства. Результативність діяльності підприємства. Антикризова діяльність підприємства.
48299. Фінанси. Конспект лекцій 482.5 KB
  Фінансова система України охоплює такі ланки фінансових відносин: державну бюджетну систему; спеціальні позабюджетні фонди; державний кредит; страхування; фінанси підприємств різних форм власності. У відповідності до закону України Про бюджетну систему України та інших нормативних актів бюджетна система складається з: державного бюджету; місцевих бюджетів бюджету Автономної республіки Крим та інших місцевих бюджетів обласний міський районний селищний сільський.
48300. КОНТРОЛЬ І РЕВІЗІЯ У ПРОМИСЛОВОМУ ПІДПРИЄМНИЦТВІ 563.5 KB
  Розглянуто особливості контролю і ревізії промислового підприємництва у сучасних умовах. Рекомендовано для студентів аспірантів та викладачів економічних спеціальностей вищих навчальних закладів фахівців у галузі контролю та ревізії. Органи ДКРС мають право проводити ревізії і перевірки суб’єктів підприємницької діяльності лише за постановою правоохоронних органів. ОРГАНІЗАЦІЯ ПРОВЕДЕННЯ РЕВІЗІЇ ТА КОНТРОЛЮ ПРОМИСЛОВОГО ПІДПРИЄМНИЦТВА Основні питання: 1.