Рекурсивное определение языка

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

2 ответа

Решение

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

S --> (S) | SS | ^

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

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

РЕДАКТИРОВАТЬ

Зачем (s) не S?

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

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

во втором шаге внутри S заменяется (S),

TEXT ::= BRACES | BRACKETS | LIST;
BRACES ::= "{" ( TEXT | /* nothing */ ) "}";
BRACKETS ::= "(" ( TEXT | /* nothing */ ) ")";
LIST ::= ( BRACES | BRACKETS ) | ( BRACES | BRACKETS ) "," LIST;
Другие вопросы по тегам