如何改进在算术解析器中存储函数的数据结构,从中缀转换为后缀表示法?
此时我正在使用一个 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循环版本)。
如果有很多函数(和很多比较),索引引用会导致错误并且不清楚。当我们删除/添加新功能时,也有必要更改索引....
如何改进这样的结构,使其易于阅读、易于维护和易于扩展?
我在想枚举
typedef enum
{
Fsin=0,
Fcos,
Ftan
} TFunctions;
结果是
if ( strcmp ( funct[Fsin], text) == 0 ) || ( strcmp ( funct[Fcos], "text ) == 0 ) || ( strcmp ( func[Ftan], text) == 0 ))
{
...
但可能有更好的解决方案...