C ++解析用户提供的方程式

时间:2013-05-24 05:07:11

标签: c++ parsing equations

我正在用C ++编写一个执行一些基本微积分函数的程序。为了创建一个方程来执行这些函数,我使用以下代码:

float equationone(float x)
{
    return  sqrt(x);
}

float equationtwo(float x)
{
    return (x * x);
}

我想知道如何调整我的代码,以便用户输入sqrt(x)(x*x)之类的内容,并让函数返回正确的答案。

2 个答案:

答案 0 :(得分:2)

不是那么简单的任务,因为你很快就会想要括号,运算符优先级等等。 您需要创建parser。如果您想学习如何从头创建一个,请尝试查找antlr。您基本上委托了一个工具来创建一个很难手动制作的代码。当然,您需要学习如何编写语法定义,但它可能会在将来支付。相反,如果您需要使用脚本语言在短时间内为真正的客户提供服务,请考虑查看除c ++之外的其他内容。 在Stackoverflow上查看this other reply

答案 1 :(得分:1)

您需要编写一个解析器来将字符串分解为组件(数字,运算符等),然后使用reverse polish来处理它。该页面包含有关如何转换为中缀表示法以反转波兰表示法的链接。 LEX/YACC可以帮助您完成解析位。