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

 


 

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

65071. События эпохи Монгольской империи в бурятских письменных памятниках XVIII – начала XX веков 125.5 KB
  Укажем только на тот факт что в продолжительной полемике материалы бурятских письменных памятников и фольклора почти не привлекались хотя вопрос об этнической принадлежности туматов был интересен прежде всего тем что изначально господствовало мнение...
65072. Золотоордынские ханы 60—70-х годов XIV в. Хронология правлений 419.5 KB
  Одним из важнейших источников сведений по теме являются сохранившиеся до наших дней серебряные и медные золотоордынские монеты того времени на которых выбивалось имя правившего хана отмечались место и время год по хиджре их чекана.
65074. Клятва на золоте: тюркский вклад в монгольскую дипломатию 105.5 KB
  Ритуал клятвы относится к культурным универсалиям. История клятвы такова. Петахия описывает два обычая клятвы скреплявших отношения между половцем и чужестранцем проводником и путешественником: В этой земле не ходят иначе как с провожатым.
65076. Укек по письменным источникам XIII – XVIII веков 133 KB
  Самым первым по времени упоминанием об Укеке принято считать сообщение францисканского монаха Гильома де Рубрука. Летом 1253 г. он проезжал через «новый поселок» на берегу Волги, «который татары устроили вперемежку из русских и сарацин, перевозящих послов...
65077. ПРОБЛЕМА ПРАВЛЕНИЯ СУЛТАНА ХАЛИЛА И КАЗАН-ХАНА В РЕКОНСТРУКЦИИ ЧАГАТАЙСКОЙ ИСТОРИИ 30-40-х гг. XIV века 76.5 KB
  Поэтому для исторической реконструкции представляется возможным использовать здесь более доступные данные относимые к более позднему времени правления амиров Казагана Хусейна и Темура а также более раннему периоду правления Чагатаидов дома Дувыхана с последующей...
65078. Повесть о разгроме монголов дербен ойратами 45 KB
  Здесь ничего необычного нет потому что автор произведения писал так как было принято в его время: название сочинения указывать в заключительных строках где в большинстве случаев подчеркивалось что такое-то сочинение закончилось завершено.
65079. К вопросу об интерпретации эпитета ал-Джедид (по материалам городов Улуса Джучи) 32 KB
  Большинство исследователей полагает, что прибавление эпитета означает новый город. Однако существует и другая точка зрения. В.Д.Смирнов считал, что отдельных городов Сарая ал-Джедид, Булгара ал-Джедид и других вовсе не было...