Studopediya

КАТЕГОРИИ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) П Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военно дело (14632) Висока технологиите (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къщи- (47672) журналистика и SMI- (912) Izobretatelstvo- (14524) на външните >(4268) Informatika- (17799) Iskusstvo- (1338) История- (13644) Компютри- (11121) Kosmetika- (55) Kulinariya- (373) култура (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23,702) Matematika- (16,968) инженерно (1700) медицина-(12,668) Management- (24,684) Mehanika- (15423) Naukovedenie- (506) образование-(11,852) защита truda- (3308) Pedagogika- (5571) п Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) oligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97182) от промишлеността (8706) Psihologiya- (18,388) Religiya- (3217) с комуникацията (10668) Agriculture- (299) Sotsiologiya- (6455) спортно-(42,831) Изграждане, (4793) Torgovlya- (5050) превозът (2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596 ) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Telephones- (8441) Elektrotehnika- (4623) Мощност инженерно (12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

Един пример прилагане на метода на рекурсивно спускане

Предвид граматика G ({А, В, С}, (A, B, C, S}, Р, S):

P:

S -> AA | BB

A -> а | BA | CC

В -> б | AB | CC

С -> AaVb

Необходимо е да се изгради за разпознаване, който използва метода на рекурсивно спускане.

Тя може да се види, че граматиката отговаря на условията, необходими за изграждането на такъв за преобразуване.

Напиши процедура в език за програмиране C, който ще предостави анализ на входните вериги на езика, определен от тази граматика. Според алгоритъма, е необходимо да се изгради процедура разбор за всеки nonterminal граматиката, така че да даде името на съответните процедури. като входни данни е процедурите за анализ са както следва:

· String на входящи символи;

· Pointer позиция (MP четящата глава машина) в входния низ;

· Array да съхранява определен брой правила, прилагани;

· Сериен номер на друго правило в масива.

Резултатът от всяко третиране може да бъде число, различно от нула ( "истинска") или 0 ( "фалшива"). В първия случай, въведен знак низ се приема от резолвера, във втория случай - не се приема. За улеснение на изпълнението, ако не бъдат предприети веригата за преобразуване ще се върне на текущата позиция на показалеца във веригата. Вие също ще трябва още един допълнителен процедура за водене на документация в масива на правилата за последователност (да го наречем WriteRules).

Сега за признаването на входния низ трябва да има число масив Правила достатъчно място за съхраняване на правилата. След това е необходимо за обработка на резултата, ако резултатът е 1 надвишава дължината на веригата - верига прието, в противен случай - веригата не се приема. В първия случай в Правилата на масиви има поредните номера на правила, необходими, граматика за отнемане на веригата, а променливата N - брой на тези правила. Въз основа на тази верига може лесно да се изгради деривация дърво.

Правила за сила на звука масив не е известна предварително, тъй като не са известни предварително на броя на изходните стъпки. За да се избегнат проблеми с недостатъчен статичен масив разпознаване по-горе процедура, могат да бъдат променени така, че да работи с динамично разпределение на паметта (WriteRules промяна на процедура и вида на параметъра на други piRul извикване на процедури). На преобразуване от логическа операция не е засегната. Също така трябва да се помни, че метода на рекурсивно спускане се основава на рекурсивни поставените повикване процедури, които в значителна дължина на входния низ характер могат да изискват подходящ обем от стека с призив за съхраняване на адреси процедури, техните параметри и локални променливи.

Този пример показва, че рекурсивен алгоритъм спускане е удобен и лесен за реализация. Основната пречка в исковата си молба, че е класа на граматиката, което позволява анализ на базата на този алгоритъм, е много ограничен.

<== предишната лекция | Следващата лекция ==>
| Един пример прилагане на метода на рекурсивно спускане

; Дата на добавяне: 01.20.2014; ; Отзиви: 216; Нарушаването на авторски права? ;


Ние ценим Вашето мнение! Беше ли полезна публикува материал? Да | не



ТЪРСЕНЕ:


Вижте също:



zdes-stroika.ru - Studopediya (2013 - 2017) на година. Не е авторът на материала, и предоставя на студентите възможност за безплатно обучение и употреба! Най-новото допълнение , Ал IP: 66.249.93.206
Page генерирана за: 0.023 сек.