因此,我正在编写一个使用BNF语法生成句子的程序。假设我有一个语法文件:
<s>::=<np> <vp>
<np>::=<dp> <adjp> <n>|<pn>
<dp>::=the|a
<adjp>::=<adj>|<adj> <adjp>
<adj>::=big|fat|green|wonderful|faulty|subliminal|pretentious
<n>::=dog|cat|man|university|father|mother|child|television
<pn>::=John|Jane|Sally|Spot|Fred|Elmo
<vp>::=<tv> <np>|<iv>
<tv>::=hit|honored|kissed|helped
<iv>::=died|collapsed|laughed|wept
我要求它打印一个随机的句子,它会选择一个选项,假设它,然后说它选择了约翰。然后我们之所以完成,是因为我们撞到了一个终端,然后去了。说它去了,然后选择笑了。我们会被约翰笑的句子。
我想做的就是添加p。意思是段落。我的段落公式将是
的线条<p>::=<s> n <s> | <p>
我希望该 n以新行的形式出现,而是我的程序将其在终端中打印为 n,而不是将其视为逃生序列!我的程序要做的是,它将其插入每个令牌,如果它是终端,则将其变成一个字符串。为什么不起作用?注意:我无法显示我程序的实现详细信息。
<new_line> ::= 'x0A'
然后您可以使用
我可以修改我的程序以在bnf行中读取为char []数组。这将允许其解释逃生序列。然后,我可以将字符阵列转换为字符串并将其打印出来。我希望这对遇到类似问题的任何人有帮助。