不受限制的语法

时间:2012-12-07 19:55:56

标签: grammar

这个一般语法是做什么的?

S -> LR 
L -> L0Y 
L -> LX 
X1 -> 1X 
X0 -> 0X 
X0 -> 1Y 
Y1 -> 0Y 
YR -> R     
L  -> epsilon 
R  -> epsilon

起始符号是S.我试图从这个语法生成字符串,我得到了每个二进制数字。但我认为它确实具体。

1 个答案:

答案 0 :(得分:3)

S -> LR 
L -> L0Y 
L -> LX 
X1 -> 1X 
X0 -> 0X 
X0 -> 1Y 
Y1 -> 0Y 
YR -> R     
L  -> epsilon 
R  -> epsilon

终端:0,1 开始:S

让我们分开语法:

S -> LR 
L -> L0Y 
L -> LX

这将生成L形式的字符串,字符串X0YR

X1 -> 1X 
X0 -> 0X 
X0 -> 1Y 
Y1 -> 0Y 
YR -> R

XY视为对二进制字符串执行操作:X将传播到右侧,然后将0更改为1以及随后的所有内容10 s。实际上,单个X会增加二进制数而不会更改其字符串长度(或卡住)。

前导Y会将所有1的字符串重写为所有0(或卡住)。

L的规则视为字符串右侧可能的操作。 L => L0Y会将字符串从全1重置为全零,并将其长度增加1。 L => LX将增加任何其他数字,但如果该值为最大值则会失败。

这两个动作一起足以生成(低效率)所有0和1的字符串(包括空字符串)。

L  -> epsilon 
R  -> epsilon

只会清理哨兵。

在四个单词中对语言进行一种可能的描述:

所有字符串的集合