Правильная неограниченная грамматика для:

Кажется, я не могу понять неограниченную грамматику для

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

person Hopeless Noob    schedule 27.11.2014    source источник
comment
Эта грамматика будет соответствовать многим строкам vw, где v и w имеют одинаковое количество a и одинаковое количество b. Это надмножество вашего целевого языка. Однако я не знаю, почему JFLAP не находит производных.   -  person rici    schedule 28.11.2014


Ответы (1)


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

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

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

person Brian Tompsett - 汤莱恩    schedule 19.05.2015