1

私はソフトウェアを作成しています(C#で書かれ、Windowsアプリケーションになります)、この問題に遭遇しました-

一連の変数があり、ユーザーがそれらの変数に対して幅広い数学関数を定義できるようにする必要があります。

しかし、私のユーザーは必ずしもプログラミングに関する予備知識を持っている必要はありません。

私が検討したオプションは次のとおりです。

  • 数学的「関数」を定義するためのある種の GUI を作成します。しかし、それは非常に制限的です。
  • 非常に単純な組み込み言語を実装します。これにより、比較的理解しやすいままで柔軟性が提供されます。Lua を見てみましたが、問題はプログラミングの予備知識がかなり必要なことです。たとえば、「3をXに割り当てる」など、より読みやすい(SQLに多少似ている)ことを考えていました。

他のアイデアは大歓迎です。

私は基本的に、ユーザーがプログラミングの知識を持っていないという前提で、ここに行くための最良の方法を探しています。

ただし、これは私のソフトウェアの主な機能ではないことに注意してください。したがって、ユーザーがこの機能を使用したい/使用する必要がある場合は、時間をかけてマニュアルを数分間見て、その方法を学ぶと思います。それほど複雑でない限り。

ありがとう、マルキ:)

4

2 に答える 2

4

必要なのはドメイン固有の言語です。あなたは Lua を試してみましたが、それが受け入れられるとは思いませんでした。ほとんどのビルド済みスクリプト言語はその時点で出回っていると思います。

予想される関数の複雑さに応じて、言語を正確に指定できるように、小さな再帰降下パーサーの実装を試してみることをお勧めします。このようにして、次のようなことを実現できます。

assign 3 to X
show sin(X * 5)

これがやりたいことを少し超えている場合は、Ironyなどのライブラリから解析支援を得ることができます。これにより、しばらくトークン化/字句解析で遊ぶのではなく、抽象構文ツリーの使用に集中できます。

必要に応じて、非常に複雑な式をすぐに解析および評価するFLEEを確認することもできます。

于 2010-10-25T20:36:43.087 に答える
2

ANTLR は、独自の言語を作成する場合に最適なパーサーです。

于 2010-10-25T20:53:39.707 に答える