10

C++ で 1 つの式を評価したい。それを評価するために、式をプレフィックス形式に変換したいと考えています。

ここに例があります

 wstring expression = "Feature1 And Feature2";

可能な方法を次に示します。

 expression = "Feature1 And (Feature2 Or Feature3)";

 expression = "Not Feature1 Or Feature3";

Here AndOrNotは予約語であり、括弧 (" ( ", ) ) はスコープに使用されます

優先順位が高くない

Andは次の優先順位が Not に設定されます

Orは And の次の優先順位に設定されます

区切り文字に使用されるWHITE SPACE 。Expression には、 TABNEWLINEなどの他の要素はありません

算術式は必要ありません。私は評価を行うことができますが、誰かが文字列をプレフィックス表記に変換するのを手伝ってくれますか?

4

3 に答える 3

3

You will need to construct the grammar up front. So why do all the parsing by hand. Instead use a parser builder library like Boost-Spirit. Or lex/yacc or flex/bison.

Then use the AST generated by the parser builder to output the data in any way you see fit. Such as infix to prefix or postfix, ...etc.

于 2010-04-01T04:49:21.433 に答える
1

あなたの意図は状態を評価することだと思います。したがって、本格的なパーサーは必要ありません。

まず、ここで文字列を操作する必要はありません。1.「機能1」をId(機能を表す整数)と言うように変換します

したがって、次の"Feature1 And (Feature2 Or Feature3)";ように言うステートメント(1 & (2 | 3) これから...標準のInfixを使用して、接頭辞変換を行い、接頭辞表記を評価できます。

中置を接頭辞に変換するアルゴリズムは次のとおり ですhttp://www.c4swimmers.esmartguy.com/in2pre.htmhttp://www.programmersheaven.com/2/Art_Expressions_p1

于 2010-04-01T05:07:23.457 に答える
-1

Use a parser generator like the Lex/Yacc pair.

于 2010-04-01T04:47:02.960 に答える