Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilety_po_AiP.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.1 Mб
Скачать
  1. Формальные языки и грамматики. Определение языка, описание языка. Понятие грамматики.

Алфавит – множество символов, используемых в языке.

Из символов алфавита можно составлять цепочки символов различной длины. Самая маленькая цепочка – 0 символов, имеет длину 0. Пустая цепочка Λ. Ограничений на длину цепочки нет.

А* - множество всех возможных цепочек в алфавите А.

Язык L – любое подмножество А*.

Если цепочка принадлежит языку, то она называется правильной с точки зрения языка.

Описание любого языка программирования состоит из 4 компонент:

      1. Описание лексики – задание алфавита языка

      2. Описание синтаксиса – задание правил построения различных конструкций ЯП.

      3. Описание семантики – описание различных конструкций с точки зрения правил их работы

      4. Описание прагматики – «как писать программы на этом языке?»

Синтаксис. Грамматика – один из наиболее частых способов описания языка.

G={A,N,P,S}

S – начальный символ грамматики, A – алфавит, N – множество нетерминальных символов, P – множество правил грамматики

Нетерминальными называются символы, требующие дальнейшей расшифровки. Алфавит – множество терминальных символов. S – нетерминальный символ.

Множество правил формулируется в виде β::=γ (::= это есть)

β обычно содержит определяемое понятие – нетерминальный символ или цепочку расширенного алфавита А+N

γ – определение этого символа

β и γ принадлежат (A+N)*

Кроме того, в γ могут входить символы | (или), [] (может быть или не быть), {} (может быть 0 и более раз) и др.

  1. Классификация формальных языков. Понятие вывода.

Формальные языка принято классифицировать по виду правил описывающей их грамматики (порождающей грамматики), т.е. по виду цепочки β и цепочек, составляющих правую часть продукций γ.

Хомский ввел следующие 4 класса грамматик:

  1. Без ограничений на вид правил

  2. Правила имеют вид vBw::=vαw, где B из N, v,w – произвольные цепочки, α – непустая цепочка

  3. Цепочка β имеет вид В, где В из N – нетерминальный символ

  4. Цепочка β имеет вид В, где В из N – нетерминальный символ; правая часть γ состоит из цепочек, имеющих вид a или aC, где а из А, С из N.

1 – класс контекстно-зависимых языков.

2 – контекстно-свободные языки (большинство)

3 – регулярные или автоматные языки (могут быть заданы с помощью регулярных выражений или конечным автоматом).

Примеры: А={0,1,a,b}, N={S,B,C,D} S – начальный символ.

        1. Контекстно-зависимая грамматика

P1:

  1. S::=DBC

  2. aBb::=aCb

  3. 0B1::=0bD1|0Ca1

  4. C::=b|1|aC

  5. D::=a|0

        1. Контекстно-свободная грамматика

P2:

  1. S::=BC|DS

  2. B::=aDC|1

  3. C::=01D

  4. D::=b|1C

        1. Автоматная грамматика

  1. S::=aB|bC

  2. B::=0|1|aC

  3. C::=1D

  4. D::=a|0

Понятие вывода

Пусть σ – цепочка, включающая подцепочку β, т.е. σ=α1βα2, где α1 и α2 – подцепочки, а β – левая часть одного из правил грамматики β::=γ

Правая часть γ состоит из нескольких альтернатив, γ=π12….|πk, где πi – цепочки.

Тогда из цепочки σ=α1βα2 можно получить с помощью подстановок новые цепочки символов: σ’=α1 π1α2, σ’’=α1 π2α2,… σ(k)1 πkα2

Говорят, что цепочки σ(i) выводятся из цепочки σ за один шаг вывода (непосредственно выводятся). Обычно на каждом шаге берется одна из альтернатив, обозначим ее σ1. Если она не состоит полностью из терминальных символов, к ней можно применить какое-нибудь правило грамматики и сделать еще один шаг вывода, получив цепочку σ2 и т.д.

σ1 => σ2 => … => σn

Записанная последовательность называется выводом в данной формальной грамматике, а любая из цепочек σi называется выводимой из цепочки σ, причем σi+1 называется непосредственно выводимой из σi. Отношение выводимости обозначают =>+, т.е. σ =>+ σn

Отношению выводимости можно придать свойство рефлексивности, т.е. считать, что никакое правило не применялось. Тогда σn = σ. Общее, рефлексивное отношение выводимости обозначают σ=>* σ

Цепочки G: S=>* σ называются сентенциальными формами грамматики.

Если она состоит только из терминальных символов, то она называется сентенцией.

Множество всех сентенций грамматики G образует язык, порождаемый грамматикой G и обозначается L(G). Грамматики, порождающие один и тот же язык, называются эквивалентными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]