数値を受け取り、その数値でコマンドを処理するシンプルな概念実証アプリケーション(REPL)を作成したいと考えています。
例:1から始めます。次にadd 2
、「」と書いて、3を与えます。次にmultiply 7
、「」と書いて、21を与えます。次に、素数かどうかを知りたいので、「is prime
」と書きます(現在の数値- 21)、それは私に偽りを与えます。「is odd
」は私に真実を与えるでしょう。等々。
さて、コマンドが少ない単純なアプリケーションの場合、単純なものでもコマンドswitch
を処理できます。しかし、拡張性が必要な場合、機能を実装するにはどうすればよいですか?コマンドパターンを使用しますか?言語用のシンプルなパーサー/インタープリターを構築できますか?「multiply 5 until >200
」のようなより複雑なコマンドが必要な場合はどうなりますか?再コンパイルせずにそれを拡張する(新しいコマンドを追加する)簡単な方法は何でしょうか?
編集:いくつかのことを明確にするために、私の最終的な目標はWolframAlphaに似たものを作ることではなく、(数値の)プロセッサのリストを作ることです。しかし、最初はゆっくりと始めたいと思います(単一の数値について)。
私は、Haskellを使用してリストを処理する方法に似たものを念頭に置いていますが、非常に単純なバージョンです。コマンドパターン(または同等のコマンド)のようなもので十分か、それとも目標を達成するために新しいミニ言語とパーサーを作成する必要があるのかと思いますか。
Edit2:すべての回答に感謝します。すべては私にとって非常に役に立ちましたが、エマッドカリームが最も私を助けてくれたので、それを答えとして選びます。再度、感謝します!