【问题标题】:Find a grammar for the language查找该语言的语法
【发布时间】:2013-10-25 01:07:21
【问题描述】:

{ambnci | m > n + i}

我已经尝试了两个小时来解决这个问题。这是我目前所拥有的。

//To start with as many a's as you want:  
S => a | aA | aS   
//To ensure an a gets added each time a b or c does so there is always at least 1 more a than b's plus c's.  
A => aBb | aaBbCc | aCc   
B => aBb | lambda  
C => ???

我知道这远非正确,这就是我寻求帮助/提示的原因。

谢谢。

【问题讨论】:

    标签: grammar


    【解决方案1】:

    你的语法不正确。

    阅读Tips for creating “Context Free Grammar” 并链接答案,你的语言语法是

    S --> aSc | B    // for every `c` there must be a `a`
    B --> aBb | A    // for every `b` there must be a `a`
    A --> aA  | a    // generate extra `a`
    

    【讨论】:

      【解决方案2】:

      从内到外构建它:

      • B → aBb | ε        -- 匹配 aibi
      • C → 加速 | B       -- 匹配 ai+jbicj
      • S → 交流 | aS       -- 在前面至少再添加一个 a

      这不是最小的——你可以用 5 个规则和 2 个非终端来做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        • 2014-02-03
        • 2011-07-29
        • 1970-01-01
        相关资源
        最近更新 更多