QScriptEngine评估数字c ++的正方形或立方体

时间:2018-02-14 18:55:00

标签: c++ qt

我需要在QScriptEngine中评估数字的立方体或平方

QString expression_string("2 * 2 * 2"); // not like this but 2^3 
QScriptEngine expression;
double my_val=expression.evaluate(expression_string).toNumber();

如何以这种方式实现像2 ^ 2这样的2 * 2?

1 个答案:

答案 0 :(得分:1)

如果您可以直接使用Math.pow功能,那么您应该只使用它:auto expression = QStringLiteral("Math.pow(2, 3)")

如果要将2^3之类的表达式重写为有效的javascript,则需要一个解析器。您将重写中缀语法expr1^expr2为前缀语法Math::pow(expr1, expr2)无法通过简单的正则表达式完成。

解析器可以用JavaScript编写。也许您可以重用jsep,修改后使用指数运算符,并使用它来创建表达式的AST,然后您可以将其重写为Math.pow 或<的有效javascript / em>根据AST进行评估。

jsep使添加自定义运算符变得微不足道 - 这个例子直接来自他们的自述文件:

jsep.addBinaryOp("^", 10);