私は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としての代わりとしてそれを治療するためのターミナルでそれを印刷しますエスケープシーケンス!私のプログラムがしていることは、各トークンを取り込んでそれを文字列に変換することです。ターミナルであれば\ nです。なぜそれは働いていないのですか? 注:私のプログラムの実装の詳細を表示することはできません。
私のプログラムではまだ\ x0Aとして出力されます。私のプログラムでは、この文字列を他の文字列と連結する必要がありますが、それは問題と関係していますか? – Meepo
@ヤクナスはしないでください。 \ x0A、 '\ n'、 '\ x0A'を試してください – Alagunto
ああ、私のプログラムはそれをcharとして読まなければなりません。それが問題です。なぜそれが動作していないのだろうか、とにかくこの周りにはありますか?私のプログラムがそれを文字列として読み込んでいるので、 '\ x0A'として出力されます。トークンベースの処理のように考えてください。 – Meepo