русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пример 2.8


Дата добавления: 2013-12-23; просмотров: 1287; Нарушение авторских прав


Разбор цепочек

Пример 2.7

Примеры грамматик и языков различных типов.

1) Грамматика G1=({a, b},{A, B, C, D, F, S}, P1, S), где

P1={ S ® aaCFD, F ® AFB | AB, AB ® bBA, Ab ® bA, AD ® D, Cb ® bC,

CB ® C, bCD ® e};

L1(G1) = {a2 b| n ³ 1} – это язык типа 0.

 

2) Грамматика G2=({0, 1}, {А, В, S}, P2 , S), где

Р2={S ® ASB | AB, AB ® BA, A ® 0, B ® 1}

L2(G2)={цепочки из 0 и 1 с одинаковым числом 0 и 1} – это язык типа 1.

 

3) Грамматика G3=({a, b, c}, {Q, S}, { S ® aQb | accb, Q ® cSc}, S);

L3(G3) = {(ac)n (cb)n | n > 0} - это язык типа 2.

 

4) Грамматика G4=({a, b, ^}, {А, В, S}, P4, S);

P4={ S ® A^ | B^, A ® a | Ba, B ® b | Bb | Ab }

L4(G4) = {w ^ | w Î {a,b}+, где нет двух рядом стоящих а} - язык типа 3.

 

 

 

Цепочка принадлежит языку, порождаемому грамматикой, только в том случае, если существует ее вывод из цели этой грамматики. Процесс построения такого вывода (а, следовательно, и определения принадлежности цепочки языку) называется разбором.

С практической точки зрения наибольший интерес представляет разбор поконтекстно-свободным (КС и УКС) грамматикам. Их порождающей мощности достаточно для описания большей части синтаксической структуры языков программирования, для различных подклассов КС-грамматик имеются хорошо разработанные практически приемлемые способы решения задачи разбора.

Рассмотрим основные понятия и определения, связанные с разбором по КС-грамматике.

 

Вывод цепочки b Î (VT)* из S Î VN в КС-грамматике G = (VT, VN, P, S), называетсялевым(левосторонним), если в этом выводе каждая очередная сентенциальная форма получается из предыдущей путем замены самого левого нетерминала.

 

Вывод цепочки b Î (VT)* из S Î VN в КС-грамматике G = (VT, VN, P, S), называетсяправым(правосторонним), если в этом выводе каждая очередная сентенциальная форма получается из предыдущей путем замены самого правого нетерминала.



 

В грамматике для одной и той же цепочки может быть несколько выводов, эквивалентных в том смысле, что в них в одних и тех же местах применяются одни и те же правила вывода, но в различном порядке.

Для цепочки a+b+a в грамматике

G = ({a,b}, {S,T}, {S ® T | T+S; T ® a|b}, S)

можно построить следующие выводы:

1) S®T+S®T+T+S®T+T+T®a+T+T®a+b+T®a+b+a

2) S®T+S®a+S®a+T+S®a+b+S®a+b+T®a+b+a

3) S®T+S®T+T+S®T+T+T®T+T+a®T+b+a®a+b+a

Здесь вывод (2) - левосторонний, вывод (3) - правосторонний, а вывод (1) не является ни левосторонним, ни правосторонним, но все эти выводы являются эквивалентными в указанном выше смысле.

 

Для КС-грамматик можно ввести удобное графическое представление вывода, называемое деревом вывода, причем для всех эквивалентных выводов деревья вывода совпадают.

 

Дерево называется деревом вывода(или деревом разбора)в КС-грамматике G = {VT, VN, P, S), если выполнены следующие условия:

1) каждая вершина дерева помечена символом из множества (VN È VT È e), при этом корень дерева помечен символом S; листья - символами из (VT È e);

2) если вершина дерева помечена символом A Î VN, а ее непосредственные потомки - символами a1, a2, ... , an, где каждое ai Î (VT È VN), то A ® a1a2...an - правило вывода в этой грамматике;

3) если вершина дерева помечена символом A Î VN, а ее единственный непосредственный потомок помечен символом e, то A ® e - правило вывода в этой грамматике.

 

Дерево вывода в примере 2.8. для цепочки a+b+a в грамматике G представлено на рис. 2.3:

 

 
 
Рис. 2.3. Дерево вывода


КС-грамматика G называется неоднозначной, если существует хотя бы одна цепочка a Î L(G), для которой может быть построено два или более различных деревьев вывода.

Это утверждение эквивалентно тому, что цепочка a имеет два или более разных левосторонних (или правосторонних) выводов.

В противном случае грамматика называется однозначной.



<== предыдущая лекция | следующая лекция ==>
Пример 2.6 | Пример 2.10


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.