Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
(грамматики классифицируются по виду их правил вывода)
Грамматики типа 0, называют грамматиками общего вида. Эти грамматики порождают естественные языки.
Это самый общий тип грамматик. В него подпадают все без исключения формальные грамматики, но часть из них, к общей радости, может быть также отнесена и к другим классификационным типам. Дело в том, что грамматики, которые относятся только к типу 0 и не могут быть отнесены к другим типам, являются самыми сложными по структуре.
Практического применения грамматики, относящиеся только к типу 0, не имеют.
Эти классы грамматик эквивалентны. Могут использоваться при анализе текстов на естественных языках, однако при построении компиляторов практически не используются в силу своей сложности. Для контекстно-зависимых грамматик доказано утверждение: по некоторому алгоритму за конечное число шагов можно установить, принадлежит цепочка терминальных символов данному языку или нет.
То есть грамматика допускает появление в левой части правила только нетерминального символа.
КС-грамматики широко применяются для описания синтаксиса компьютерных языков (см. синтаксический анализ).
К третьему типу относятся регулярные грамматики (автоматные) — самые простые из формальных грамматик. Они являются контекстно-свободными, но с ограниченными возможностями.
Регулярные грамматики применяются для описания простейших конструкций: идентификаторов, строк, констант, а также языков ассемблера, командных процессоров и др.
Формальные языки классифицируются в соответствии с типами грамматик, которыми они задаются. Однако, один и тот же язык может быть задан разными грамматиками, относящимися к разным типам. В таком случае, считается, что язык относится к наиболее простому из них.
Соотношения между типами грамматик:
(1) любая регулярная грамматика является КС-грамматикой;
(2) любая регулярная грамматика является УКС-грамматикой;
(3) любая КС- грамматика является УКС-грамматикой;
(4) любая КС-грамматика является КЗ-грамматикой;
(5) любая КС-грамматика является неукорачивающей грамматикой;
(6) любая КЗ-грамматика является грамматикой типа 0.
(7) любая неукорачивающая грамматика является грамматикой типа 0.
(8) любая УКС-грамматика является грамматикой типа 0.
Замечание: УКС-грамматика, содержащая правила вида A → ε, не является КЗ-грамматикой и не является неукорачивающей грамматикой.
Соотношения между типами языков:
(1) каждый регулярный язык является КС-языком, но существуют КС-языки,
которые не являются регулярными (например, L = {anbn | n>0}).
(2) каждый КС-язык является КЗ-языком, но существуют КЗ-языки, которые
не являются КС-языками (например, L = {anbncn | n>0}).
(3) каждый КЗ-язык является языком типа 0.
Замечание: УКС-язык, содержащий пустую цепочку, не является КЗ-языком.
Замечание: следует подчеркнуть, что если язык задан грамматикой типа k, то это не значит, что не существует грамматики типа k’ (k’>k), описывающей тот же язык. Поэтому, когда говорят о языке типа k, обычно имеют в виду максимально возможный номер k.
Например, грамматика типа 0 G1 = ({0,1}, {A,S}, P1, S) и КС-грамматика G2 = ({0,1}, {S}, P2, S), где
P1: S → 0A1 P2: S → 0S1 | 01
0A → 00A1
A → ε
описывают один и тот же язык L = L(G1) = L(G2) = { 0n1n | n>0}. Язык L называют КС-языком, т.к. существует КС-грамматика, его описывающая. Но он не является регулярным языком, т.к. не существует регулярной грамматики, описывающей этот язык.
Дата публикования: 2015-01-10; Прочитано: 1740 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!