КАТЕГОРИИ: Архитектура-(3434)Астрономия-(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)Полиграфия-(1312)Политика-(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) |
Грамматики с ограничениями на правила
Некоторые свойства грамматик. Понятие выводимости Примеры грамматик Грамматика, порождающая язык {0n1n | n≥0} имеет вид: G0= ({0,1}, {S}, S, P) T N S P где P = {S→0S1, S→ε}. Грамматика, порождающая язык {ambn | m,n ≥ 0} имеет вид: G1= ({a,b}, {S,A,B}, S, P) T N S P где набор правил определяется следующим образом: P = {S→AB, A→aA, A→ε, B→bB, B→ε} Отношение ÞG непосредственного вывода на множестве (T È N)* – j ÞG y означает, что y непосредственно выводима из j для грамматики G = (T, N, P, S), т. е, если abg – цепочка из множества (T È N)* и b ® d – правило из Р, то abg ÞG adg Транзитивное замыкание отношения ÞG+ (нетривиальный вывод за один и более шагов) — j ÞG+ y означает, что y выводима из j нетривиальным образом (возможно за несколько шагов). Рефлексивное и транзитивное замыканиеотношения ÞG* (вывод за нуль и более шагов) — j ÞG* y означает, что y выводима из j. Пусть Þk k-я степень отношения Þ, тогда, если a Þk b, то существует последовательность a0a1a2a3 ... ak из к+1 цепочек: a = a0, a1,... ai -1 Þ ai,, 1 ≤ i ≤ k и ak = b Выводы для грамматики G1 = ({0, 1}, {A, S}, S, P): Т N S P S Þ 0A1 Þ 00A11 Þ 0011 — S порождает... S Þ1 0A1; S Þ2 00A11; S Þ3 0011 – i -тая степень отношения S Þ+ 0A1; S Þ+ 00A11; S Þ+ 0011 – транзитивное замыкание отношения S Þ* S; S Þ* 0A1; S Þ* 00A11; S Þ* 0011 – рефлексивное и транзитивное замыкание отношения где 0011 Ì L(G1) – принадлежит языку L грамматики G1 Эквивалентность грамматик – это, когда различные грамматики порождают один и тот же язык, т. е. грамматики G1 и G2 будут эквивалентными, если L(G1) = L(G2). Например, G1 = ({0,1}, {A,S}, S, P1) и G2 = ({0,1}, {S}, S, P2) где P1: S → 0A1 P2: S → 0S1 | 01 (| – знак или) 0A → 00A1 A → ε эквивалентны, т. к. обе порождают язык L(G1) = L(G2) = {0n1n | n>0} Несмотря на эквивалентность определяемых языков, одна грамматика может быть значительно удобнее другой, с точки зрения ее использования в компиляторе. Определение грамматик не накладывает никаких ограничений на количество нетерминалов в левой части правил: Грамматика G=({a,b,c},{S,B,C},S,P), где P содержит следующие правила: P = {S→aSBC, S→abC, CB→BC, bB→bb, bC→bc, cC→cc} порождает язык {anbncn, n≥1} (n>0) В грамматике G=({0,1},{А,S},S,P), где P = {S → 0A, 0A → 00A1, S → ε} — левая часть одного из правил содержит пару из терминального и нетерминального символа. Эквивалентная ей грамматика G1 = ({0,1}, {A,S}, S, P1), где P1: S → 0A1 0A → 00A1 A → ε Соглашение – альтернатива правила вывода из цепочки: для записи правил вывода с одинаковыми левыми частями α → β1 α → β2... α → βn пользуются сокращенной записью через операцию или: α → β1 | β2 |...| βn; каждое βi (i= 1, 2,..., n) называется альтернативой правила вывода из цепочки α. Несмотря на большое разнообразие грамматик, при построении трансляторов применяются только некоторые из них, имеющие ограничения, что связано с практической целесообразностью использования определенных типов правил, так как сложность их построения непосредственно влияет на сложность построения трансляторов. По виду правил выделяют несколько классов грамматик.
Дата добавления: 2014-01-11; Просмотров: 653; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |