类型3语法定义为:
w1 --> w2
其中w1是非终端,w2的形式如下:
w2 = aB w2 = a
其中B是非终端,a是终端.一个特例是当w1是起始符号而w2是lambda(空字符串)时:
w1 = S S --> lambda
我无法找到两个问题的答案.首先,为什么w2不能成为Ba的形式.第二,为什么lambda仅允许用于起始符号.该书指出,常规语言相当于有限状态自动机,我们可以很容易地看到我们可以为这两种情况构建FSA.我查看了其他资源,这些资源中不存在这些限制.
First,Why can’t w2 be of the form Ba.
以W作为起始符号采用以下语法:
W -> lambda W -> aX X -> Wb
它生成{an bn:n natural},这不是常规语言.因此,如果您只想生成常规语言,则此限制至关重要.或者,您可以允许w2 = Ba,但禁止使用类型规则w2 = aB – 这也提供常规语言.该语法将构建一个“向后”的单词.
如果您允许这两种类型的规则,您将获得一个名为linear languages的类.
Second,Why lambda is only allowed for the starting symbol only.
这不是必要的限制.
您可以消除lambda对非终结符号的所有使用:采取一些规则W – > lambda,删除它,并替换所有规则U – > aW与U – >; aW和U – >一个.显然你不能消除使用lambda作为终端符号(语言不再产生空字).
因此,在许多地方使用lambda的每个类型3语法都可以“标准化”为仅使用lambda作为起始符号的语法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。