语言 0^n1^n 可以表示为正则文法吗?
can the language 0^n1^n be expressed as a regular grammar?
首先:我不学习计算机科学,只是对形式语言感兴趣。
我知道这种语言不规则,因为有限状态机无法计算 b 之前的 a 的数量(它需要一个堆栈)and/or 因为您不能将其表达为正则表达式,但是下面不就是定义上述语言的正则文法吗?
S -> 0S | 1S | epsilon
还是因为 epsilon 而不算数?
不,定义您的语言的上下文无关语法是
S -> 0S1 | epsilon
您实际上可以构建树,例如使用字符串 000111
S -> 0S1 -> 00S11 -> 000S111 -> 000epsilon111 -> 000111
注意语法和正则表达式的定义。你提供的语法不起作用,因为它不能保证你有相同数量的 0 和 1。自己测试一下,例如,使用字符串 00011,它不是该语言的一部分,但它可以被您的语法识别。
首先:我不学习计算机科学,只是对形式语言感兴趣。
我知道这种语言不规则,因为有限状态机无法计算 b 之前的 a 的数量(它需要一个堆栈)and/or 因为您不能将其表达为正则表达式,但是下面不就是定义上述语言的正则文法吗?
S -> 0S | 1S | epsilon
还是因为 epsilon 而不算数?
不,定义您的语言的上下文无关语法是
S -> 0S1 | epsilon
您实际上可以构建树,例如使用字符串 000111
S -> 0S1 -> 00S11 -> 000S111 -> 000epsilon111 -> 000111
注意语法和正则表达式的定义。你提供的语法不起作用,因为它不能保证你有相同数量的 0 和 1。自己测试一下,例如,使用字符串 00011,它不是该语言的一部分,但它可以被您的语法识别。