うーん、これは言語にとらわれず、C# または F# で行うことを好みますが、今回は「それがどのように機能するか」という質問にもっと興味があります。
私が達成したいことは次のとおりです。
a) 学びたい - 今回は私のエゴについてです。楽しいプロジェクトで、自分がこの分野で本当に得意であることを自分に示したいと思っています。
b) 私は EBNF について少し知っています (まだわかりませんが、EBNF で演算子の優先順位がどのように機能するかはわかりません - Irony.NET は正しく動作します。例を確認しましたが、これは私にとって少し不吉です)
c) 私のパーサーは、たとえば 5 * (3 + (2 - 9 * (5 / 7)) + 9) を取得して、正しい結果を得ることができるはずです。
d) 率直に言って、これは私にとってコンパイラーやインタープリターを書く上での最大の問題のようです。64ビットのアセンブラコードを生成するのに問題はありませんが(手動でアセンブラを書くことができます)、数式パーサーは...
e) 別の考え: シンプルなコンピューター (約 2kB の RAM しかない私の古い Sharp 1246S など) でさえ、それを行うことができます... それは難しいことではありませんよね? そして、非常に古いプログラミング言語でさえ、式の評価があります... BASIC は 1964 年のもので、私が例として提示した種類の式をすでに計算できました。
f)いくつかのアイデア、いくつかのインスピレーションで本当に十分です-演算子の優先順位と括弧を実行する方法がわかりません-ただし、ASTが関係していることと、多くの人がスタックを使用していることは知っています
それで、あなたはどう思いますか?