语言的递归定义

时间:2013-02-09 16:43:40

标签: recursion computer-science computer-science-theory

假设我的语言只包含平衡括号,即{ε,(),(()),()(),((())),(()()),...}我被要求为它写一个递归定义。有人可以给我一个例子吗? - 我对这种计算机科学理论有点新鲜。

2 个答案:

答案 0 :(得分:0)

一种递归定义是语法。要生成平衡括号的语言:

S --> (S) | SS | ^

这是递归的,因为S出现在生产规则的RHS中。

制作规则:LHS --> RHS

编辑

为什么(s)不是S

因为要递归地添加()对,而不是一次。

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

第二步内部S(S)取代。

答案 1 :(得分:-2)

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