Грамматика: различия между версиями
KVN (обсуждение | вклад) Нет описания правки |
KVN (обсуждение | вклад) Нет описания правки |
||
Строка 20: | Строка 20: | ||
Другие названия --- [[Грамматика без ограничений|''Грамматика без ограничений'']], [[Грамматика составляющих|''Грамматика составляющих'']], [[Грамматика с фразовой структурой|''Грамматика с фразовой структурой'']], [[Грамматика типа 0|''Грамматика типа 0'']], [[Порождающая грамматика|''Порождающая грамматика'']]. | Другие названия --- [[Грамматика без ограничений|''Грамматика без ограничений'']], [[Грамматика составляющих|''Грамматика составляющих'']], [[Грамматика с фразовой структурой|''Грамматика с фразовой структурой'']], [[Грамматика типа 0|''Грамматика типа 0'']], [[Порождающая грамматика|''Порождающая грамматика'']]. | ||
==См. также== | |||
[[Автоматная грамматика]], [[Грамматика без е-правил]], [[Контекстно-свободная грамматика]], [[Контекстно-зависимая грамматика]], [[Праволинейная грамматика]], [[Регулярная грамматика]] | |||
==Литература== | ==Литература== |
Версия от 22:31, 2 июня 2009
Грамматика(Grammar) - один из основных методов описания формального языка. Имеет вид четверки [math]\displaystyle{ G = (N, \Sigma, }[/math] [math]\displaystyle{ P, S) }[/math], в которой
(1) [math]\displaystyle{ N }[/math] --- алфавит нетерминальных символов, или нетерминалов (иногда называемых вспомогательными символами, синтаксическими переменными или понятиями);
(2) [math]\displaystyle{ \Sigma }[/math] --- не пересекающийся с [math]\displaystyle{ N }[/math] алфавит терминальных символов, или терминалов;
(3) [math]\displaystyle{ P }[/math]~--- конечное множество так называемых правил (или продукций)~--- слов вида [math]\displaystyle{ \alpha\longrightarrow\beta , }[/math] где [math]\displaystyle{ \alpha\in(N\cup\Sigma)^*N(N\cup\Sigma)^* }[/math] --- заменяемая цепочка, [math]\displaystyle{ \beta\in(N\cup\Sigma)^* }[/math] --- заменяющая цепочка и [math]\displaystyle{ \longrightarrow }[/math] --- символ, не принадлежащий ни [math]\displaystyle{ N }[/math], ни [math]\displaystyle{ \Sigma }[/math];
(4) [math]\displaystyle{ S }[/math] --- выделенный символ из [math]\displaystyle{ N }[/math], называемый начальным (или исходным) символом.
Важным преимуществом данного метода описания формального языка является то, что в отличие от распознавателя грамматика придает цепочкам (предложениям) языка полезную структуру, которая может использоваться, например, для придания смысла предложениям языка. Из терминальных символов образуются цепочки определяемого языка [math]\displaystyle{ L }[/math], а нетерминальные символы используются при порождении языка [math]\displaystyle{ L }[/math] как вспомогательные. Сердцевину грамматики составляет конечное множество правил, которые могут использоваться в процессе получения цепочек языка, или, как говорят, их вывода. Если установлено, что некоторая цепочка [math]\displaystyle{ \gamma }[/math] порождается грамматикой (или, как говорят, выводится в ней), то также выводимой в данной грамматике является любая цепочка, которая получается из [math]\displaystyle{ \gamma }[/math] заменой в ней подцепочки, являющейся заменяемой цепочкой некоторого правила грамматики, на заменяющую цепочку соответствующего правила.
Язык, определяемый (порождаемый) грамматикой [math]\displaystyle{ G }[/math] (обозначается [math]\displaystyle{ L(G) }[/math]), --- это множество цепочек, которые состоят только из терминальных символов и выводятся, начиная с цепочки, состоящей из одного начального символа.
Другие названия --- Грамматика без ограничений, Грамматика составляющих, Грамматика с фразовой структурой, Грамматика типа 0, Порождающая грамматика.
См. также
Автоматная грамматика, Грамматика без е-правил, Контекстно-свободная грамматика, Контекстно-зависимая грамматика, Праволинейная грамматика, Регулярная грамматика
Литература
[Ахо-Ульман],
[Касьянов/95],
[Касьянов-Поттосин].