51206

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

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

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

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

Русский

2014-02-07

53.35 KB

7 чел.

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

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

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

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

ОТЧЕТ

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

 


 

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

73806. Русская философия 104.5 KB
  Исследователи неоднократно отмечали что самое оригинальное и значительное было создано русскими мыслителями в области философии истории историософия и социальной философии. Высокая духовность обоснование нравственности как необходимого условия человеческого бытия – важнейшая черта русской философии неизменный вектор многовековой социокультурной традиции. Кажется что грани этой вечной проблемы во многом определяют напряженное поле отечественной культуры и философии стремящихся определить свое собственное место в лоне мировой цивилизации....
73807. Учение о бытии (онтология) 84.5 KB
  Исторические корни возникновения понятия бытия. В европейской культуре первые определения бытия возникли еще в Древней Греции что исторически совпало со становлением философского знания переходом от образномифологического к теоретикологическому мышлению. Понятие бытия отвлекается от бесконечного многообразия свойств и качеств конкретных предметов кроме одного быть существующими. Исторические корни возникновения понятия бытия Бытие производное от слов быть есть весьма распространенных во многих языках мира имеет свое...
73808. Учение о развитии. Диалектика 113 KB
  Диалектика – теория и метод познания действительности, учение о всеобщей связи и развитии. Представления об изменчивости и взаимосвязанности всего сущего возникли в глубокой древности.
73809. Сознание. Современные представления о сознательной деятельности 95 KB
  Историческое развитие понятия сознания. Проблема сознания во все века привлекала внимание философов ибо она рассматривает одну из наиболее значимых и специфических сторон человеческой жизнедеятельности. В истории философии существуют различные иногда диаметрально противоположные точки зрения объясняющие сущность сознания его происхождение и роль в обществе. В современной отечественной философии возобладающим является понимание сознания как идеальной формы деятельности направленной на отражение и преобразование действительности.
73810. Познание. Познавательные способности человека 95.5 KB
  Теория истины. Центральной проблемой гносеологии является проблема истины под которой понимается соответствие знаний действительности. В качестве основного критерия истины признак по которому определяется достоверность знания выступает деятельность человека понятая как общественно-историческая практика. Интуиция – это способность постижения истины без развернутого логического обоснования в ее непосредственности как единство чувственного и рационального.
73812. Человек как объект философского осмысления 100.5 KB
  Историческое развитие взглядов на человека. При всем различии взглядов на сущность человека его личностные качества анализируются подавляющим большинством философов через деятельность индивида направленную на окружающий мир. Историческое развитие взглядов на человека Размышления о человеке возможностях его деятельности ценностносмысловой ориентации надеждах на будущее составляют основное содержание философии. Начиная с древнейших времен возникает проблема человека заключающая неисчерпаемое многообразие аспектов и подходов своего...
73813. Культура Цивилизация Будущее человечества 128 KB
  Феномен культуры. Уровень культуры содержание особенности проявляются в объектах материальных и духовных создаваемых людьми в процессе этой деятельности. Понятие культуры означает специфический способ жизнедеятельности человека направленной на преобразование природы общества самого себя и представленной предметами материального и духовного труда. Понятие цивилизация часто используется для обозначения материальной культуры и особенно техникотехнологической основы современные орудия производства технологии компьютерноинформационные...
73814. ИССЛЕДОВАНИЕ ПРОСТЕЙШИХ ЭЛЕКТРОННЫХ СХЕМ 4.68 MB
  В схемах постоянного тока в которых ток обычно имеет фиксированное значение определяемое сопротивлениями и напряжениями катушки индуктивности обычно имеют лишь незначительный эффект или вообще не имеют никакого эффекта как в нашем случае с использованием идеальной катушки.