【问题标题】:Recursive Definition for Language语言的递归定义
【发布时间】:2013-02-09 16:43:39
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    S --> (S) | SS | ^
    

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

    制作规则:LHS --> RHS

    编辑

    为什么 (s) 不是 S

    因为递归地添加 () 对并且不止一次。

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

    在第二步中,内部S(S) 替换。

    【讨论】:

    • 您能否再解释一下?:为什么是(S)而不是S?另外,为什么要停在 SS - 为什么不是 SSSS?
    • @JohnRoberts 要获得 SSSS,您应用该规则两次:S->SS->SSSS。
    • @JohnRoberts ^ 用于将句子形式转换为句子。 S--^你能use S --> (S) ---> ((S)) --^ --> (())
    【解决方案2】:
    TEXT ::= BRACES | BRACKETS | LIST;
    BRACES ::= "{" ( TEXT | /* nothing */ ) "}";
    BRACKETS ::= "(" ( TEXT | /* nothing */ ) ")";
    LIST ::= ( BRACES | BRACKETS ) | ( BRACES | BRACKETS ) "," LIST;
    

    【讨论】:

    • 语言中没有括号。
    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2011-03-04
    • 2015-04-11
    • 2011-06-28
    • 2021-09-18
    相关资源
    最近更新 更多