// 函数声明
double calculate(const char* expr);
double parse_expression(const char** expr);
double parse_term(const char** expr);
double parse_factor(const char** expr);
// 计算表达式
double calculate(const char* expr) {
return parse_expression(&expr);
}
// 解析表达式
double parse_expression(const char** expr) {
double result = parse_term(expr);
while (**expr == '+' || **expr == '-') {
char op = **expr;
(*expr)++;
double value = parse_term(expr);
if (op == '+') {
result += value;
} else {
result -= value;
}
}
return result;
}
// 解析因子
double parse_factor(const char** expr) {
double result = 0;
// 跳过空白字符
while (isspace(**expr)) {
(*expr)++;
}
if (**expr == '(') {
(*expr)++;
result = parse_expressio