51206

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

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

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

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

Русский

2014-02-07

53.35 KB

22 чел.

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

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

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

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

ОТЧЕТ

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

 


 

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

85624. Неорганическая химия, курс лекций 1.96 MB
  Учебно-методическое пособие включает лекции по отдельным темам курса «Неорганическая химия» и предназначено для контролируемой самостоятельной работы студентов инженерно – технологического факультета, для которых введен отдельный курс по химии элементов, а также может быть использовано студентами других факультетов.
85625. Внутрішній порядок у підрозділах 6.21 MB
  Для розміщення кожної роти необхідно передбачити такі приміщення: спальне приміщення для особового складу. народознавчу світлицю; кімнату для командира роти кімнату для підготовки офіцерів до занять; кімнату для підготовки сержантів до занять; кімнату для зберігання зброї; кімнату місце для чищення зброї...
85626. ВЕДЕНИЕ ДЕЛ НОРМАТИВНЫХ ДОКУМЕНТОВ 27.78 KB
  На каждый нормативный документ формируется дело для долгосрочного хранения (далее - дело НД). В деле НД находятся документы, подготовленные во время разработки, согласования, утверждения, регистрации, издания и применения разработанных и пересмотренных НД, а также документы об изменениях в них.
85627. ПРАВИЛА И МЕТОДЫ ПРИНЯТИЯ И ПРИМЕНЕНИЯ МЕЖДУНАРОДНЫХ И РЕГИОНАЛЬНЫХ СТАНДАРТОВ 41.13 KB
  Важно помнить что даже если два органа стандартизации в своих национальных стандартах ввели отклонения по МС или новую редакцию и их считают несущественными проблемы могут возникнуть из-за того что эти изменения накладываются и приводят к неприемлемости между национальными стандартами.
85628. ЭКСПЕРТИЗА ПРОЕКТОВ НАЦИОНАЛЬНЫХ НОРМАТИВНЫХ ДОКУМЕНТОВ 19.6 KB
  Экспертирование проекта НД выполняют чтобы комплексно проверить и исследовать его соответствие интересам государства потребностям потребителей уровню развития науки и техники действующим техническим регламентам и законодательству международным региональным и национальным стандартам и подготовить...
85629. РЕГИСТРАЦИЯ НОРМАТИВНЫХ ДОКУМЕНТОВ 25.87 KB
  Регистрируют национальные стандарты, межгосударственные стандарты, которые принимают по ГОСТ 1.9 как национальные, кодексы установившейся практики (установки, кодексы, правила), государственные классификаторы, изменения в эти документы, принятые Минэкономики Украины и Госстроем Украины...
85630. СТАНДАРТИЗАЦИЯ В ОРГАНИЗАЦИИ 48.28 KB
  Основными задачами этих служб по стандартизации являются: организация разработки стандартов и других документов по стандартизации на производимую проектируемую продукцию попутных и побочных продуктов и вторичных материалов и подготовка предложений по ее своевременному пересмотру...
85631. Расчет и выбор посадок типовых соединений 454.5 KB
  В соответствии с выбранными посадками подшипника на вал и в корпус по ГОСТ 25347 - 82 на поля допусков цилиндрических соединений устанавливаются предельные отклонения на размер вала по системе отверстия и на размер отверстия в корпус по системе вала.
85632. Субъекты российского предпринимательского права 36.74 KB
  Индивидуальные предприниматели и организации легитимируются в качестве хозяйствующих субъектов с помощью государственной регистрации. Российская Федерация и субъекты РФ не нуждаются в государственной регистрации в качестве субъекта предпринимательского права так как в соответствии...