51206

Построение синтаксического дерева

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

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

Включить в синтаксический анализатор из лабораторной работы №.3 построение синтаксического дерева. Использовать атрибутный метод Кнута, т.е. преобразовать КС–грамматику из лабораторной работы № 3 в атрибутную грамматику добавлением атрибутов и правил построения синтаксического дерева. Расширить программу синтаксического анализатора из лабораторной работы...

Русский

2014-02-07

53.35 KB

10 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное  учреждение высшего профессионального образования

«Ижевский государственный технический университет им. М.Т.Калашникова»

Кафедра АСОИУ

ОТЧЕТ

к лабораторной работе №4

по дисциплине «Математическая лингвистика»

на тему «Построение синтаксического дерева»

Вариант №13.

Выполнил:
студент гр. Б04-782-1 Н.А.Сидоров

Руководитель:
ассистент каф.АСОИУ Д.Р.Касимов

Ижевск 2013

1 Постановка задачи

Включить в синтаксический анализатор из лабораторной работы №.3 построение синтаксического дерева. Использовать атрибутный метод Кнута, т.е. преобразовать КС–грамматику из лабораторной работы № 3 в атрибутную грамматику добавлением атрибутов и правил построения синтаксического дерева. Расширить программу синтаксического анализатора из лабораторной работы № 3 введением действий по построению синтаксического дерева. Для визуализации дерева использовать соответствующие визуальные компоненты, такие как TTreeView (Delphi).


2 Атрибутная грамматика с действиями по построению дерева

В таблице 2.1 можно увидеть атрибутную грамматику для указанного ранее варианта.

Таблица 2.1

В таблице <буква> обозначает лексему, состоящую только из букв, а <цифра> - какое-либо цифровое слово.

Для порождения терминала (здесь терминал – цепочка из цифр или букв) строится лист дерева, а для случая, когда из нетерминала порождается нетерминал, строится узел.

Атрибут здесь представлен в качестве , обозначающий родительский узел. Функция  создает узел-наследника для узла  с именем  и возвращает только что созданный узел.  

3 Исходный текст синтаксического анализатора

class SynAnalyzer

{

 private:

  …

  void A(TTreeNode *);

  void S(TTreeNode *);

  

};

//------------------------------------------------------------------------------------

void SynAnalyzer::Parse(const AnsiString &s)

{

 procStr=s;

 try

  {

    GetNextToken(); //получили первый терминал, и идем...!

    S(Form1->TreeView1->Items->Item[0]); // отправляем туда корень

    if (curTkn!=empty) throw curCh; // !!!

  }

 catch(int a)

  {

    SynAnalyzer *err=new SynAnalyzer();

    (*err).Error();

    delete err;

  }

}

//------------------------------------------------------------------------------------

void SynAnalyzer::A(TTreeNode *uzel)

{

 TTreeNode *newUzel;

 newUzel=Form1->TreeView1->Items->AddChild(uzel,'A'); //узел

 if (curTkn==digit)

  {

    //построить бы

    Form1->TreeView1->Items->AddChild(newUzel,"<digit> from A"); //лист

    GetNextToken();

  }

 else

  {

    if (curTkn==letter)

     {

       // построить бы

       Form1->TreeView1->Items->AddChild(newUzel,"<letter> from A"); //лист

       GetNextToken();

       S(newUzel);

       A(newUzel);

     }

    else throw curCh;

  }

}

//---------------------------------------------------------------------------------

void SynAnalyzer::S(TTreeNode *uzel)

{

 TTreeNode *newUzel;

 newUzel=Form1->TreeView1->Items->AddChild(uzel, 'S');

 if (curTkn==letter)

  {

    //построить бы надо

    Form1->TreeView1->Items->AddChild(newUzel,"<letter> from S");

    GetNextToken();

  }

 else

  {

    if (curTkn==digit)

     {

       //построить бы надо

       Form1->TreeView1->Items->AddChild(newUzel,"<digit> from S");

       GetNextToken();

       A(newUzel);

       S(newUzel);

     }

    else throw curCh;

  }

}


4 Результаты тестирования

На рисунке 4.1 можно увидеть разложение в виде дерева для следующей цепочки:

Рисунок 4.1 – Древовидная структура разложения

На следующем рисунке (рисунок 4.2) показано дерево для разложения следующей цепочки:

Рисунок 4.2 – Визуальное представление исходной последовательности лексем

 


 

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

5214. Побудова діаграм та графіків в MS Excel 33.33 KB
  Побудова діаграм та графіків 1. Робота з майстром діаграм Табличний процесор надає широкі можливості для подання даних в графічній формі.Серед них найбільш поширені діаграми. Діаграми використовуються для виявлення тенденцій зміни якогось пара...
5215. Розв’язування типових математичних задач засобами табличного процесора 55.23 KB
  Розв’язування типових математичних задачзасобами табличного процесора Задача підбору параметрів Означення.Задачею підбору параметра називається знаходження такого значення аргумента даної функції, при якому ця функція на...
5216. Робота з базами даних в MS Excel 152.64 KB
  Робота з базами даних в MSExcel Загальні положення Табличний процесор Excel забезпечує, поряд із власне обробленням електронних таблиць-аркушів, формування ділової графіки, створення, оброблення і підтримку нескладних, але великих баз та...
5217. Перетворення друкованих документів в електронну форму 31.47 KB
  Перетворення друкованих документів в електронну форму Способи подання інформації Основні різновиди природних даних, які здатний зберігати та обробляти комп'ютер, наступні: десяткові числа текст зображення звук. З м...
5218. Застосування мультимедійних технологій в процесі створення презентацій 31.83 KB
  Застосування мультимедійних технологій в процесі створення презентацій 1. Загальні відомості про презентації та пакет демонстраційної графіки PowerPoint Сучасний фахівець повинен вміти готувати і проводити публічні виступи як у межах своєї установи,...
5219. Комп’ютерні мережі та способи їх організації 33.82 KB
  Комп’ютерні мережі. Загальні відомості про комп’ютерні мережі В наш час велике значення має використання комп’ютерів для створення мереж, які формують єдиний інформаційний простір. Комп’ютерна мережа - сукупність взаємозв...
5221. Глобальна компютерна мережа Інтернет 60 KB
  Інтернет – це глобальна комп’ютерна мережа, до складу якої входять національні регіональні та локальні мережі в масштабах всієї земної кулі. Комп’ютери, які постійно підключені до мережі Інтернет і знаходяться у постійно ввімкненому стані
5222. Устройство клавиатуры и мыши 60.5 KB
  Устройство клавиатуры и мыши. Давайте же разберем устройство клавиатуры и мыши. Начнем с общей характеристики, которая присуща обоим устройствам - тип подключения к ПК. По этому типу они делятся на проводные и беспроводные. Проводные устро...