質問

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

変数のセットを持っているので、ユーザーがそれらの変数に対して広範囲の数学関数を定義できるようにする必要があります。

ただし、ユーザーは必ずしもプログラミングに関する事前知識を持っている必要はありません。

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

  • 数学的な「関数」を定義するための何らかの GUI を作成します。しかし、それは非常に制限的です。
  • 非常にシンプルな組み込み言語を実装することで、柔軟性を提供しながらも比較的理解しやすくなります。Lua について調べてみましたが、問題は、プログラミングに関する予備知識がかなり必要になることです。私は、より読みやすいもの (SQL に似たもの)、たとえば「3 を X に代入する」を考えていました。

他のアイデアも歓迎です。

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

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

ありがとう、マルキ:)

役に立ちましたか?

解決

何が欲しいのはドメイン固有の言語です。私はあなたがLuaの試したし、許容可能なその見つけることができませんでした参照 - 。 - 私はほとんど事前に構築されたスクリプト言語は、その後出ていることを前提としています。

あなたの期待される機能の複雑さに応じて、私はあなたが小さな再帰下降を実装するに打撃を与えることをお勧めしますパーサーには、の正確のあなたの言語を指定することができるように。あなたがのようなものを実現することができますこの方法:

assign 3 to X
show sin(X * 5)
これはあなたが行うには喜んでいるもの以外のビットがある場合は、

は、あなたがとして、ライブラリなどからいくつかの構文解析の支援を得ることができますアイロニーする。これは、あなたが抽象構文木を使用してではなく、いくつかの時間のために字句/トークン化で遊んに集中することができます。

あなたがしたい場合は、

、あなたも右のかなり複雑な式を解析し、評価するであろう、のFLEE を見ることができますゲートの出ています。

他のヒント

ANTLRは素晴らしいパーサであるあなたがあなた自身の言語を作りたい場合は、

scroll top