编译器:为所有 0 和 1 字符串集设计一种语法,使得每个 0 后紧跟至少一个 1
Compilers: design a grammar for all sets of strings of 0s and 1s such that every 0 is immediately followed by at least one 1
认为可能是s -> (0*1)*
,但我对它的理解还不够确定。
本题出自编译龙书
你的语法定义不正确。例如,字符串 011
显然满足给定的 属性,但是,它无法被您的语法识别。此外,您的语法可以识别像 001
这样的字符串,它显然不满足给定的 属性,因为第一个 0
紧接着是 0
而不是 1
.
正则表达式 011*
确保 0
后紧跟至少一个 1
,因此接受具有所需 属性 的所有二进制字符串的语言可以是由正则表达式 1*(011*)*
.
表示
等效的CFG如下:
S → AB
A → ε | 1A
B → ε | CB
C → 01A
上述CFG定义中,A
对应1*
,B
对应(011*)*
,C
对应011*
.
认为可能是s -> (0*1)*
,但我对它的理解还不够确定。
本题出自编译龙书
你的语法定义不正确。例如,字符串 011
显然满足给定的 属性,但是,它无法被您的语法识别。此外,您的语法可以识别像 001
这样的字符串,它显然不满足给定的 属性,因为第一个 0
紧接着是 0
而不是 1
.
正则表达式 011*
确保 0
后紧跟至少一个 1
,因此接受具有所需 属性 的所有二进制字符串的语言可以是由正则表达式 1*(011*)*
.
等效的CFG如下:
S → AB
A → ε | 1A
B → ε | CB
C → 01A
上述CFG定义中,A
对应1*
,B
对应(011*)*
,C
对应011*
.