16

ユーザーが中置式を文字列として入力するとします。C言語を使用してその式の結果を評価する最も簡単な方法は何ですか?

考えられる方法は、スタックを使用してポストフィックスに変換することですが、かなり長いプロセスです。仕事を簡単にするatoi()eval( )などの関数を使用する方法はありますか?

4

6 に答える 6

2

文字列を解析する必要があります。C には (ほとんどのeval()静的言語と同様に) ないため、独自のパーサーを作成するか、役立つライブラリを見つける必要があります。

最も使いやすいパーサーは C ではなく C++ 用であるため、完全に組み込み可能な言語を使用したいと思います。私の絶対的なお気に入りはLuaです。これは、ライブラリを含めなければ信じられないほど軽量になる可能性があります。また、構文は C よりも優れているため、ユーザーは C よりも気に入るかもしれません。

もちろん、Lua は本格的なプログラミング言語であるため、適切ではないか、他の方法で (アプリケーションの拡張を容易にするために) 役立つ可能性があります。

于 2009-07-30T15:37:42.863 に答える
0

それを行うためのクリーンな (おそらく短くはない) 方法の 1 つは、コンパイラーのようにツリーを構築することです。

たとえば、「2+3」という表現があるとします。「+」は頭になります。「2」は左の子、「3」は右の子になります。

各式は値に評価されるため、このツリーは無限に複雑な式に拡張できます。各演算子の優先順位でソートするだけで済みます。優先度の低い演算子 (「+」など) は一番上に、優先度の高い演算子 (「*」など) は一番下に移動します。次に、ツリーの式を下から順に評価します。

于 2009-07-30T15:39:40.753 に答える
0

いくつかのスクリプト言語のインタープリターを組み込む必要があります。

于 2009-07-30T16:35:54.290 に答える