私が取り組んでいるアプリケーションの代数式を解析する必要があり、それを試してみて、おそらく間違った道に向かう前に、少しの集合的な知恵を飾りたいと思っています。
テキスト代数式 (3*x - 4(y - sin(pi))) が与えられた場合、方程式のオブジェクト表現を作成します。カスタム オブジェクトは既に存在するため、必要なオブジェクトをインスタンス化するためにウォークできるツリーを作成するパーサーが必要です。
基本的な要件は次のとおりです。
代数を文法として表現できるので、必要に応じて制御し、カスタマイズ/拡張できます。
初期構文には、整数、実数、定数、変数、算術演算子 (+、-、、/)、累乗 (^)、方程式 (=)、括弧、優先順位、および単純な関数 (sin(pi)) が含まれます。適切な機能 (f(x) = 3x +2) をサポートするために、アプリをかなり迅速に拡張したいと考えています。
コードに統合する必要があるため、C でコンパイルする必要があります。
式を数学的に評価する必要はないので、変数を解いたり演算を実行したりするソフトウェアはノイズです。
私はGoogleの宿題をしましたが、BNF文法とソフトウェアを使用してCでコンパイラを生成するのが最善のアプローチのようです.だから私の質問:
代数式 (またはさらに良いことに、LaTex) に対応するパーサー ジェネレーターを備えた BNF 文法は既に存在しますか? 誰かがすでにこれを行っている必要があります。主にテストしたくないので、自分でロールバックすることは本当に避けたいです。図書館に妥当な金額 (50 ドル未満) を支払っても構わないと思っています。
そうでない場合、ここで学習/使用するのに最も簡単な C のパーサー ジェネレーターはどれだと思いますか? レックス?YACC? Flex、Bison、Python/SymPy、その他? 私はこれらのどれにも精通していません。