Рубрики

Классификация контекстно-свободных грамматик

КОНТЕКСТ F РЗЭ G rammars (CFG) могут быть классифицированы на основе следующих двух свойств:

1) На основе количества строк, которые он генерирует.

  • Если CFG порождает конечное число строк, то CFG нерекурсивна (или грамматика называется нерекурсивна грамматика)
  • Если CFG может генерировать бесконечное количество строк, то грамматика называется рекурсивной грамматикой.

Во время компиляции анализатор использует грамматику языка для создания дерева разбора (или дерева деривации) из исходного кода. Используемая грамматика должна быть однозначной. Неоднозначная грамматика не должна использоваться для разбора.

2) На основе количества деривационных деревьев.

  • Если существует только 1 деривационное дерево, то CFG является однозначным.
  • Если существует более 1 деривационного дерева, то CFG неоднозначен .

Примеры рекурсивных и нерекурсивных грамматик

Рекурсивные грамматики

1) S->SaS    
   S->b

Язык (набор строк), сгенерированный вышеуказанной грамматикой: {b, bab, babab,…}, который бесконечен.

2) S-> Aa
   A->Ab|c

Язык, генерируемый вышеупомянутой грамматикой: {ca, cba, cbba…}, который бесконечен.
Примечание: рекурсивная контекстно-свободная грамматика, которая не содержит бесполезных правил, обязательно создает бесконечный язык.

Нерекурсивные грамматики

   S->Aa
   A->b|c

Язык, генерируемый вышеупомянутой грамматикой: {ba, ca}, который является конечным.

Типы рекурсивных грамматик

Исходя из характера рекурсии в рекурсивной грамматике, рекурсивный CFG может быть снова разделен на следующее:

  • Левая рекурсивная грамматика (оставив рекурсию)
  • Правильная рекурсивная грамматика (с правильной рекурсией)
  • Общая рекурсивная грамматика (с общей рекурсией)

Примечание. Линейная грамматика — это не зависящая от контекста грамматика, в каждой из которых имеется не более одного нетерминала.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Классификация контекстно-свободных грамматик

0.00 (0%) 0 votes