【发布时间】:2013-02-09 16:43:39
【问题描述】:
假设我的语言只包含平衡括号,即 {ε, ( ), ( ( ) ), ( ) ( ), ( ( ( ) ) ), ( ( ) ( ) ), ... }我被要求为它写一个递归定义。有人可以给我一个例子,看看它可能是什么样子吗? - 我对这种类型的计算机科学理论有点陌生。
【问题讨论】:
标签: recursion computer-science computer-science-theory
假设我的语言只包含平衡括号,即 {ε, ( ), ( ( ) ), ( ) ( ), ( ( ( ) ) ), ( ( ) ( ) ), ... }我被要求为它写一个递归定义。有人可以给我一个例子,看看它可能是什么样子吗? - 我对这种类型的计算机科学理论有点陌生。
【问题讨论】:
标签: recursion computer-science computer-science-theory
一种递归定义是语法。生成平衡括号的语言:
S --> (S) | SS | ^
这是递归的,因为S 出现在生产规则的RHS 中。
制作规则:LHS --> RHS
编辑
为什么 (s) 不是 S ?
因为递归地添加 () 对并且不止一次。
S --> (S) ---> ((S))
在第二步中,内部S 被(S) 替换。
【讨论】:
^ 用于将句子形式转换为句子。 S--^你能use S --> (S) ---> ((S)) --^ --> (())
TEXT ::= BRACES | BRACKETS | LIST;
BRACES ::= "{" ( TEXT | /* nothing */ ) "}";
BRACKETS ::= "(" ( TEXT | /* nothing */ ) ")";
LIST ::= ( BRACES | BRACKETS ) | ( BRACES | BRACKETS ) "," LIST;
【讨论】: