Что такое не зависящие от контекста грамматики и форма Бэкуса Наура? - PullRequest
3 голосов
/ 10 июля 2011

Может кто-нибудь объяснить, пожалуйста, в терминах непрофессионала:

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

  2. что такое форма Бэкус Наур?

  3. Как использовать эту запись?

  4. Как выполнить вывод строки?

  5. Как описатьсинтаксис языка?

Ответы [ 2 ]

6 голосов
/ 08 июля 2012

Грамматика без контекста (CFG) G - это четверка (V, Σ, R, S), где

  • V: набор нетерминальных символов
  • Σ: набор клемм (V ∩ Σ = Ǿ)
  • R: набор правил (R: V → (VU Σ) *)
  • S: начальный символ

Пример CFG:

  • V = {q, f,}
  • Σ = {0, 1}
  • R = {q → 11q, q → 00f, f → 11f, f → ε}
  • S = q
  • (R = {q → 11q | 00f, f → 11f | ε})

Насколько я понимаю, форма Бэкуса-Наура (BNF) - это еще один способ представления вещей, показанных в контекстно-свободной грамматике (CFG)

Пример BNF:

[число] :: = [цифра] |[число] [цифра]

[цифра] :: = 0 |1 |2 |3 |4 |5 |6 |7 |8 |9

, который можно прочитать как что-то вроде: «число - это цифра или любое число, за которым следует дополнительная цифра» (что является искаженным, но точным способом сказать, что число состоит из одной или нескольких цифр) "цифра - это любой из символов 0, 1, 2, ... 9"

Разница:

Обозначения этихдва представления немного отличаются, то есть

-> равно :: =

|равно или

должны быть и другие различия, но, если честно, я не знаю ничего другого:)

Вывод строки:

Пусть S будет символом начала

  • S -> A, начальное состояние
  • A -> 0A
  • A -> 1B
  • A ->?
  • B -> 1B
  • B ->?

Пример строкиВывод:

Генерирует ли эта грамматика строку 000111?
да, да!

  • S -> A
  • A-> 0A
  • 0A -> 00A
  • 00A -> 000A
  • 000A -> 0001B
  • 0001B -> 00011B
  • 00011B -> 000111

Это все со моей стороны, я тоже над этим работаю и обязательно поделюсь, если узнаю больше подробностей об определении синтаксиса языка.

ура!

4 голосов
/ 10 июля 2011

Контекстно-свободная грамматика - это тип формального языка. Форма Backus Naur является языком спецификации для этого типа грамматики. Используется для описания синтаксиса языка.
Вам следует прочитать:
http://en.wikipedia.org/wiki/Formal_language_theory
http://en.wikipedia.org/wiki/Context-free_grammar
http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form

...