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