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