所以我正在编写一个使用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打印在终端中,而不是将其视为转义序列!我的程序所做的是它接收每个令牌并将其变成一个字符串,如果它是一个终端,那就是。为什么它不起作用? 注意:我无法显示我的计划的实施细节。
答案 0 :(得分:0)
<new_line> ::= '\x0A'
然后你可以使用它
答案 1 :(得分:0)
我可以修改我的程序以在BNF行中读取char []数组。这将允许它解释转义序列。然后我可以将char数组转换为字符串并将其打印出来。我希望这可以帮助任何遇到类似问题的人。