2009-04-05 4 views
1

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

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 в обратном направлении.

+0

Сделайте свое домашнее задание, пожалуйста. –

+0

Почему? Вам не нравится помогать студентам? –

+1

Мы не делаем * домашние задания для них здесь, но мы готовы помочь. Джон дал нам идею *, где * он застрял, поэтому есть ручка о том, какой совет поможет, не давая ему решения ... – dmckee

ответ

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

Спасибо, это помогает немного – 2009-04-06 00:36:55

2

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

X -> aXa 
    -> bXb 

Это строка с нечетным числом С-х :

Y -> cY2 
Y2 -> ccY2 

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

+0

Спасибо, я вижу, как нечетное число c, но я немного запутался в том, как это X-произведение работает, чтобы изменить строку. – 2009-04-06 00:34:05

+0

Это может помочь, если вы попробуете использовать правило X для создания нескольких строк - начните с некоторой комбинации a или b и посмотрите, что у вас получилось –

+0

Синтаксис меня просто сбивает с толку, я думаю; X -> aXa кажется леворекурсивным, как бы вы добрались до -> bXb от этого? – 2009-04-06 01:15:06