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

 


 

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

26301. Архивное законодательство в 1990-е 50.5 KB
  правовые основы архивного дела – иерархическая классификация архивного законодательства: федеральное законодательство: Конституция РФ ФЗ об архивном деле н р ФЗ Об обязательном экземпляре документов 1994г. норма архивного права воздействует на все сферы общественных отношений возникающих в области архивного дела: организация и фондирование документов АФ РФ комплектование и экспертиза ценности н р приказ Росархива Об утверждении примерного положения о центральноэкспертных комиссиях министерств и ведомств РФ...
26302. Внешняя политика индепендентской республики. Ирландская и шотландская экспедиции Кромвеля 25.49 KB
  Бежавшие в Ирландию роялисты установили контроль над большей частью Ирландии которую они надеялись использовать как базу для вторжения в Англию. Армия прекрасно помнила опыт 1641 года когда в ответ на восстание ирландцев парламент издал указ о конфискации в Ирландии 2. Офицеры армии надеялись что и теперь завоевание Ирландии приведет к улучшению их благосостояния. Завоевание Ирландии Сразу же после высадки в Дублине войска республики начали систематическое завоевание страны.
26303. Протекторат Кромвеля и причины Реставрации 22.61 KB
  Эту конституцию одобрил Государственный Совет 16 декабря 1653 года; новый документ осуществил разделение власти между лордомпротектором Англии Шотландии и Ирландии Государственным Советом и парламентом; впервые в него вошли представители Ирландии на самом деле это были представители англичанпротестантов которые в то время проживали в Ирландии и Шотландии. Несмотря на заключение мира в Англии сохранялись обременительные налоговые обложения военного времени акцизы. Недовольство в Англии росло быстрыми темпами и кавалеры в своих...
26304. Англия в годы Реставрации Стюартов. «Славная революция» 1688 г. 31.58 KB
  Восстановление королевской власти в Англии произошло не вследствие того что феодалыкавалеры оказались сильнее буржуазии и сумели оружием навязать свою власть. объясняется усилением консервативных настроений в рядах самой английской буржуазии а также в среде английского нового дворянства удовлетворенного превращением своей феодальной земельной собственности в неограниченную буржуазную собственность и расширением своего землевладения в Англии и особенно в Ирландии. В Англии была полностью восстановлена государственная англиканская церковь в...
26305. Хронологические границы новой истории. Периодизация курса. Ключевые проблемы курса 15.12 KB
  Хронологические границы новой истории. Хронологические границы новой истории: НОВАЯ ИСТОРИЯ общепринятая в исторической науке название третьего периода всемирной истории которому предшествуют древний и средневековый. Это деление всемирной истории на древнюю средневековую и новую уже с XVII в. были приняты советской исторической наукой которая положила в основу периодизации всемирной истории марксистский тезис об изменениях общественноэкономической формации и революционного перехода от одной формации к другой.
26306. Политическая карта Европы в начале нового времени 32.49 KB
  Политическая карта Европы в начале нового времени. политическая карта Европы сложилась в следующем виде. Всю среднюю полосу Европы занимали территориально сильно раздробленные Священная Римская империя и Италия между которыми располагался Швейцарский Союз. На Севере Европы политическую карту определяли Дания с Норвегией и Исландией и Швеция с Финляндией.
26307. Экономика стран Западной Европы в период новой истории. Переход к капиталистическому хозяйству 25.36 KB
  XVI в. вторая треть XVIII в. На экономическое развитие западноевропейских стран периода разложения феодализма и зарождения капитализма решающее влияние оказали: великие географические открытия XV XVI вв. В XVI в.
26308. Причины великих географических открытий 16.73 KB
  Причины великих географических открытий Особое место в процессе зарождения рыночных отношений занимали Великие географические открытия конец XVXVII век благодаря которым удалось установить новые торговые пути вовлечь в мировой хозяйственный оборот огромные ресурсы других стран и континентов. главными из которых были открытие Америки и морского пути в Индию вокруг Африки. В XIIIXV веках все кратчайшие торговые пути туда были перекрыты: турки захватили Балканы и Ближний Восток арабы Северную Африку Русь находилась под гнетом монгол...
26309. Важнейшие открытия XV – середины XVII в 19.21 KB
  В 14821486 годах Диогу Кан Cao пересек экватор открыл устье реки Конго и прошел вдоль побережья Африки до мыса Кросс. В 14871488 годах Бартоломеу Диаш совершил новое беспримерное плавание на юг. В 15921504 годах он совершил четыре плавания через Атлантический океан открыл Большие Антильские и часть Малых Антильских островов побережье Южной и Центральной Америки. В 14971498 годах Васко да Гама на четырех судах обогнул Африку и с помощью арабских кормчих достиг настоящей Индии.