4

(A+B)*Cシステムには、のような式を書く必要がある表記法があります#MUL(#ADD(A,B),C)。ユーザーがより一般的な方法で入力できるように、この種の表記変換を行うアルゴリズムはすでにありますか?言い換えれば、中置->私の記法から変換するアルゴリズム。最初の問題は、表記の正確な名前がわからないことです...逆ポーランド記法に似ていますが、完全ではありません。すべての演算子は、引数を取る関数としてエンコードされます。

4

3 に答える 3

9

操車場アルゴリズムを使用して、中置記法を解析できます。

于 2010-06-16T15:41:48.943 に答える
1

これが、中置->接頭辞変換を試みるLispです。それは有用な出発点として役立つかもしれません。

于 2010-06-16T15:41:49.997 に答える
0

LexとYacc(FlexとBisonの場合は同じです)を使用して、これらの単純な式を解析するのは簡単です。「Yacc電卓」のためのグーグル。

私が見つけた1つの例はhttp://www.indiastudychannel.com/resources/56696-IMPLEMENTATION-OF-CALCULATOR-USING-YACC.aspxですが、結果を計算する代わりに、最終的な文字列を作成する必要があります。たとえば、次のように(擬似コード):

expr: ‘(‘expr’)’
{
$$=$2;
}
|
expr ‘*’expr
{
$$="#MUL(" + S1 + "," + $3 + ")";
}
|
expr’/’expr
{
$$="#DIV(" + S1 + "," + $3 + ")";
}
于 2010-06-16T15:42:07.400 に答える