51206

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

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

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

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

Русский

2014-02-07

53.35 KB

11 чел.

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

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

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

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

ОТЧЕТ

к лабораторной работе №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 – Визуальное представление исходной последовательности лексем

 


 

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

44485. МЕТОДИЧНІ РЕКОМЕНДАЦІЇ для виконання самостійної роботи з дисципліни «ХІМІЯ» 1.71 MB
  Методичні рекомендації розроблено з метою полегшення набуття та закріплення знань студентів шляхом самостійної роботи над програмним матеріалом. Містить питання, які виносяться на самостійне опрацювання, завдання для розвʼязання поставлених питань та тестові завдання для контролю знань з хімії...
44486. ОПРЕДЕЛЕНИЕ ИНДУКТИВНОСТИ КАТУШКИ 2.14 MB
  В методических указаниях представлена следующая информация: название лабораторной работы, цель, краткие теоретические сведения, перечень оборудования, методика проведения эксперимента, методика обработки экспериментальных данных, контрольные вопросы, требования к содержанию отчета о лабораторной работе, список литературы, приложение со справочными материалами.
44488. Аналіз правової діяльності ТОВ Сумська насосна техніка 1.11 MB
  Основним завданням, яке було поставлено переді мною, було закріплення на практиці досягнутих під час навчання знань з правових дисциплін, засвоїти навики у веденні діловодства підприємства, набратися достатнього досвіду роботи, яка пов’язана з його функціонуванням, підсумувати досягнуті знання та проаналізувати можливість застосування цих знань на практиці.
44489. Канали зв’язку всучасних комп’ютерних мережах 56.11 KB
  Підтримка мереж в Debian`і є дуже схожою з класичними дистрибутивами Linux. Однак, якщо ви – новачок у Дебіені, деякі речі можуть бути вам невідомі. Короткий вступ до налаштування мережі у Debian GNU/Linux покаже вам, як усе це працює у даному дистрибутиві.
44490. Підвищення ефективності діяльності банку в посткризовий період 473.5 KB
  Прогнозування фінансових результатів та показники ефективності діяльності банку з використанням економіко-математичного моделювання. Ризики діяльності банку та їх вплив на ефективність діяльності. Аналіз та оцінка фінансових результатів діяльності банку
44491. Правоведение как система 222.14 KB
  Право – это система общеобязательных формально определенных норм, выражающих, обусловленную экономическими, духовными и другими условиями жизни, волю общества, охраняемая от нарушений возможностями гос. принуждения и являющаяся гос. регулятором общественных отношений.
44493. Людина та природа 292.3 KB
  Безліч видів взаємодії людини і суспільства з природним середовищем на різних етапах їх існування умовно можна назвати природокористуванням. Можна виділити такі типи природокористування: збирально-привласнюючий; виробничо-продуктивний; інноваційно-конструктивістський, ноосфер-ний або інформаційний*