2013-02-09 3 views
1

Предположим, у меня есть язык, состоящий из сбалансированных круглых скобок, т.е. {ε,(), (()),()(), (())), (()()), ...}, и меня попросят написать для него рекурсивное определение. Может ли кто-нибудь дать мне пример того, как это могло бы выглядеть? - Я немного новичок в этом типе теории компьютерных наук.Рекурсивное определение для языка

ответ

0

Рекурсивное определение - это грамматика. Для создания языка сбалансированных скобок:

S --> (S) | SS |^

это рекурсивная, потому что S появляется в RHS продукционных правил.

производственные правила: LHS --> RHS

EDIT

Почему (s) не S?

потому что нужно добавить () пар рекурсивно и более одного раза.

S --> (S) ---> ((S)) 

на втором этапе внутренняя S заменяется (S).

+0

Не могли бы вы объяснить это немного больше ?: почему (S), а не S? Кроме того, зачем останавливаться на SS - почему бы и SSSS? –

+0

@JohnRoberts, чтобы получить SSSS, вы применяете правило дважды: S-> SS-> SSSS. – SomeWittyUsername

+0

Хорошо, спасибо. И^завершает рекурсию? –

-2
TEXT ::= BRACES | BRACKETS | LIST; 
BRACES ::= "{" (TEXT | /* nothing */) "}"; 
BRACKETS ::= "(" (TEXT | /* nothing */) ")"; 
LIST ::= (BRACES | BRACKETS) | (BRACES | BRACKETS) "," LIST; 
+0

В языке нет скобок. –

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