Определение языка в EBNF - PullRequest
1 голос
/ 06 апреля 2009

Дайте спецификацию EBNF для языка L, состоящего из символов a, b и c, чтобы предложения в языке имели форму

L : sqsR

-s   is a string of any combination of the characters a and b
-sR  is that same string s reversed
-q   is an  odd number of c's followed by either an odd number of b's
     or an even number of a’s.

Что у меня так далеко:

L -> S
S -> {a}{b}Q
Q -> 

Если это так, я все еще не совсем уверен, как производить из Q, а также как представлять S в обратном порядке.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2009

Это строка, которая начинается и заканчивается той же строкой, но в обратном порядке:

X -> aXa
  -> bXb

Это строка с нечетным числом c:

Y -> cY2
Y2 -> ccY2

Я пропустил несколько важных моментов, но, надеюсь, это поможет вам начать.

1 голос
/ 06 апреля 2009
  • Попробуйте построить первые две части из середины
  • Вы можете вызвать нечетное количество повторений, начав с ровно одного элемента и добавив N * 2 дополнительных элемента (для целого числа N). Это должно подсказать, как принудительно задать четное число
...