Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_po_EVM.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.78 Mб
Скачать

I.6. Определение грамматики

Грамматика языка – это описание способа построения предложений некоторого языка, т.е. математическая система, определяющая язык. Она указывает правила порождения цепочек символов языка, т.е. является генератором символов цепочек языка. Она относится ко 2ому способу определения языков (т.е. порождению цепочек символов). Она описывается различными способами. Например : грамматика русского языка описывается набором правил, изученных в школе. Для синтаксических конструкций языков программирования используют формальные описания грамматик, построенных на основе системы правил (или продукций). Правила или продукция – это упорядочная пара цепочек символов α, β. В правилах связан порядок следования цепочек, поэтому их записывают α → β или α: = β. Такая запись читается: «α порождает β»,- или так: « β по определению есть α»

<< α … β>>, << β … α>>

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

G L(G)

2 грамматики G и G’ называются эквивалентными, если они определяют один и тот же язык.

L(G)=L(G’)

Две грамматики называются почти эквивалентными, если заданные ими языки различаются не более, чем на пустую цепочку символов.

L(G)∪{ λ }=L(G’) ∪{ λ }

Формально G определяется

G(VT,VN,P,S), где

VT – это множество терминальных символов или алфавит терминальных символов

VN – это множество не терминальных символов или алфавит нетерминальных символов

P – множество правил (продукций грамматик)

Правило вида

α → β, где α ∈ (VN ∪VT)+, β ∈ (VN ∪VT)*

S – целевой, начальный символ грамматики

S∈VT

VN ⋂ VT =

Алфавиты терминальных и нетерминальных символов не пересекаются. Это значит, что символ грамматики может быть терминальным, либо нетерминальным, но не может быть одновременно тем или другим. Целевой символ грамматики всегда терминальный (S).

Множество V=VN∪VT называют полным алфавитом грамматики G. Множество терминальных символов VT содержит символы, которые входят в алфавит языка порождаемой грамматикой. Как правило символы из этого множества встречаются только в цепочках в правых частях правил. Множество нетерминальных символов VN содержит символы, которые определяют слова,понятия, конструкции языка. Каждый символ этого множества может встречаться в цепочках как левой, так и правой частей правил грамматики, но он обязан хотя бы 1 раз быть в левой части хотя бы одного правила. Во множестве правил могут быть несколько правил, имеющие одинаковые левые части вот такого вида:

α → β1, α → β2, …, α → βn.

Когда эти правила объединяют вместе, записывают в таком виде:

α → β1 | β2 |…| βn.

Одной строке в такой записи соответствует n-правил. Такую запись правил грамматики называют правилом Бэкуса – Наура. Эта форма предусматривает, что нетерминальные символы берутся в угловые скобки.

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