我试图把头脑包裹在CGS的周围。让E^*
为ε星,',e
为空字符串,ww^r
为w的反向。
我知道建立一个接受E^*
的CFG很简单S -> 0S | 1S | e
。
接受{ww^r} such that w in E^*
的CGG很简单S –> 0S0 | 1S1 | e
。
这是否意味着接受{wxw^r} such that w, x in E^*
的CFG是一种'组合'这两个导致S –> 0S0 | 1S1 | e | B where B –> 0B | 1B | e
?
答案 0 :(得分:2)
是的,你的语法是正确的!
CFG到{wxw^r} such that w, x in E^*
S –> 0S0 | 1S1 | e | B where B –> 0B | 1B | e
是正确的语法。
但重要的是,语言{wxw^r} such that w, x in E^*
为Regular Language,因此也可以编写Left-Linear and Right-Linear Grammars。
此语言的 Right-Liner等效语法是:
S --> 0B | 1A | ^
B --> 0B | 1B | 0
A --> 0A | 1A | 1
左班轮等效于:
S --> B0 | A1 | ^
B --> B0 | B1 | 0
A --> A0 | A1 | 1
它的正则表达式是:
0(0 + 1)* 0 + 1(0 + 1)* 1 + ^
类似语言described here in my answer with DFA。
注意:语言结构相同但符号不相同,也有^
空字符串是不可能的。 +
( 0 + 1)
*
也是0(1 + 0)*0 + 1(1 + 0)*1
其DFA
此外,我还建议您查看^
的DFA。请注意RE中{{1}}的小变化,但DFA完全不同。