#pragma once

#include <QString>

// 对形如 "1+2*(3-4)" 的中缀表达式求值：
// 乘除优先级高于加减，括号可提升优先级。
class ExpressionEvaluator {
public:
    struct Result {
        bool ok = false;
        double value = 0.0;
        QString errorMessage;
    };

    // 结果显示精度（有效数字位数），要求不得小于 10。
    static constexpr int kResultPrecision = 12;
    static_assert(kResultPrecision >= 10, "结果显示精度不得小于 10 位有效数字");

    static Result evaluate(const QString& expression);
};
