1

とても懐かしく感じたので、ユーザーが複雑な文章を入力できるアドベンチャー ゲーム クリエーターを作成することにしました。

ビジター パターンを使用するレクサーとパーサーを手動で作成しましたが、BNF (Backus-Naur Form) ルールの 1 つで左再帰の問題が発生するまでは、非常にうまく機能します。

object          ::= {adjective} noun 
                  | object AND {adjective} noun 

この wiki エントリに従って左再帰を削除した後、これは正しく見えますか?

object      ::= {adjective} noun object2
object2     ::= AND {adjective noun} 
              | !Empty

編集:

hereのガイドに従って、C# を使用してレクサーとパーサーを手動でローリングしています。この演習では、パーサー ジェネレーターは使用しません。

また、このウェブサイトからパーサーの BNF ルールを取得しました。

4

2 に答える 2