2009-04-05 6 views
1

Donnez-la spécification EBNF pour la langue L qui est composé des caractères a, b et c tels que les peines dans la langue ont la formeDéfinition d'une langue dans 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. 

Ce que j'ai jusqu'à présent:

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

Si cela est juste, je suis sûr que pas encore vraiment comment produire de Q et aussi comment représenter S en sens inverse.

+0

Faites vos devoirs, s'il vous plaît. –

+0

Pourquoi? Vous n'aimez pas aider les étudiants? –

+1

Nous ne faisons pas * de * devoirs pour eux ici, mais nous sommes prêts à vous aider. John nous a donné une idée de * où * il est coincé donc il y a une poignée sur quel genre de conseil aidera sans lui donner les solutions ... – dmckee

Répondre

1
  • essayer de construire les deux premières parties du milieu des
  • Vous pouvez forcer un nombre impair de répétitions en commençant par exactement un point et en ajoutant N * 2 éléments supplémentaires (par nombre entier N). Cela devrait suggérer comment forcer un nombre pair aussi bien
+0

Merci, cela aide un peu –

2

Ceci est une chaîne qui commence et se termine par la même chaîne, mais inversée:

X -> aXa 
    -> bXb 

Ceci est une chaîne avec un nombre impair de c de :

Y -> cY2 
Y2 -> ccY2 

J'ai omis quelques bits cruciaux, mais j'espère que cela peut vous aider à démarrer.

+0

Merci, je vois comment le nombre impair de c fonctionne mais je suis un peu confus sur la façon dont cette production X fonctionne pour inverser une chaîne. –

+0

Cela peut être utile si vous essayez d'utiliser la règle X pour produire quelques chaînes - commencez avec une combinaison de a ou de b et voyez ce que vous finissez avec –

+0

La syntaxe est juste une source de confusion je pense; X -> aXa semble gauche-récursif, comment voulez-vous obtenir -> bXb de cela? –