2014-11-27 5 views
0

Я не могу показаться, чтобы выяснить Неограниченный Грамматик дляПравильных Неограниченные грамматики:

L = (w am bn | w={a,b}* m=number of a's in w n=number of b's in w).

Я построил следующую грамматику для него, но он продолжает отвергать все строки я ввожу в JFLAP. Но ручное создание дерева синтаксиса для него не создает проблем. Может ли кто-нибудь посмотреть на это для меня и посмотреть, что случилось?

S -> AST | BSU | epsilon 
UT -> TU 
T -> A 
U -> B 
A -> a 
B -> b 
+0

Эта грамматика будет соответствовать многим строкам 'vw', где' v' и 'w' имеют одинаковое количество' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' Это надмножество вашего целевого языка. Я не знаю, почему JFLAP не находит вывод. – rici

ответ

0

Я загрузил и использовал JFLAP на вашей грамматике. Я думаю, проблема заключается в том, что вы не использовали обозначения, которые JFLAP делает для ввода грамматики. Он не использует символ |, но вместо этого вы должны указать несколько правил. Поэтому в JFLAP обозначения (и до сих пор и действительной грамматики) вы бы:

S -> AST 
S -> BSU 
S -> ε 
UT -> TU 
T -> A 
U -> B 
A -> a 
B -> b 

Вы также должны установить пустую строку в качестве ε в лоскуте предпочтений. Если вы можете вручную создать дерево синтаксического анализа, вы также можете сделать это в JFLAP, чтобы показать выводы.

Смежные вопросы