我应该手动应用生产规则来找出这个语法生成的语言吗?这很乏味,有什么技巧/提示可以加快速度吗?
G = {{S, B}, {a, b}, P, S}
P = {S -> aSa | aBa, B -> bB | b}
编辑:我发现 Matajon 的回答很好,那就是考虑由非终端符号生成的每种语言,然后将它们组合起来。
但是当我必须解决一些像这样的复杂示例时,我仍然陷入困境:
G = {{S, R, T}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, P, S}
P = {S -> A | AS | BR | CT,
R -> AR | BT | C | CS,
T -> AT | B | BS | CR,
A -> 0 | 3 | 6 | 9,
B -> 1 | 4 | 7,
C -> 2 | 5 | 8}
疯了,不是吗?取自过去的考试(编程语言课程)。