下面是基本推导过程,如果你看懂了过程,那么编程实现应该不会太难。就是建立栈并每次分析栈顶字母并寻找可用规则进行"解释"的过程。
测试数据输入为B(ehnxgz)B,根据题目中要求使用的规则(2)和后面两个转换规则,推导过程为
B(ehnxgz)B-->tAdA(ehnxgz)B 应用规则B-->tAdA
tAdA(ehnxgz)B-->tsaedA(ehnxgz)B 应用规则A-->sae
tsaedA(ehnxgz)B-->tsaedsae(ehnxgz)B 应用规则A-->sae
tsaedsae(ehnxgz)B-->tsaedsaeezegexeneheB 应用规则(θδ1δ2…δn) --> θδnθδn-1… θδ1θ,这里的θ为字母e,δ1为h,δ2为n,δ3为x,δ4为g,δ5为z
tsaedsaeezegexeneheB-->tsaedsaeezegexenehetAdA 应用规则B-->tAdA
tsaedsaeezegexenehetAdA-->tsaedsaeezegexenehetsaedA 应用规则A-->sae
tsaedsaeezegexenehetsaedA-->tsaedsaeezegexenehetsaedsae 应用规则A-->sae
分析结束,根据小写字母与汉字的对应关系,得到
tsaedsaeezegexenehetsaedsae-->天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅