中置記法から後置記法に変換する算術パーサーに関数を格納するためのデータ構造を改善するにはどうすればよいですか?
現時点では、char 配列の配列を使用しています。
char *funct[] = { "sin", "cos", "tan"... }
char text[] = "tan";
この実装は少し混乱しており、char が関数であることをテストすると、次の比較が行われます。
if ( strcmp ( funct[0], text) == 0 ) || ( strcmp ( funct[1], "text ) == 0 ) || ( strcmp ( func[2], text) == 0 ))
{
... do something
}
(または for サイクル バージョン)。
多くの関数 (および多くの比較) がある場合、インデックス参照はエラーにつながり、明確ではありません。新しい関数を削除/追加するときに、インデックスを変更する必要もあります....
このような構造を改善して、読みやすく、保守しやすく、スケールアップしやすいようにするにはどうすればよいでしょうか。
私はenumについて考えていました
typedef enum
{
Fsin=0,
Fcos,
Ftan
} TFunctions;
その結果
if ( strcmp ( funct[Fsin], text) == 0 ) || ( strcmp ( funct[Fcos], "text ) == 0 ) || ( strcmp ( func[Ftan], text) == 0 ))
{
...
しかし、より良い解決策があるかもしれません...