问题标签 [exprtk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
511 浏览

c++ - ExprTK 未知变量分辨率取决于表达式类型

我正在尝试为布尔表达式创建一个解析器。表达式中的符号是从类似 XML 的数据结构中读取的。

为类似的东西实现解析器很简单

通过使用“未知符号解析器”来使用 ExprTK,该解析器通过返回的字符串值将 ab 解析为字符串<a><b>some value</b></a>

但现在考虑 XML<a><b>5</b></a>

有什么方法可以编写一个未知符号解析器,它可以同时评估a.b == 5a.b == '5'吗?

0 投票
1 回答
2733 浏览

python - C++ Exprtk 与 Python eval()

问题如下。
一个文本文件包含数百万行算术 - 需要快速评估。
我一直在探索解决这个问题的选项,并使用不错的exprtk C++库编写了一个小脚本。
该代码有效并且能够评估表达式,但比我想象的要慢。算术行可能会变得很长,这可能会使问题更加复杂。出于兴趣,我将评估时间与基本 Pythoneval()命令的评估时间进行了比较,很惊讶它eval()比 exprtk 快 3-4 倍!

这是C++代码:

这是Python代码:

文本文件有一个非常基本的格式,一个新的算术行紧随其后。第一行的示例如下:

我应该对此感到惊讶吗?
我很惊讶,因为阅读文档强调 eval() 很慢并且通常应该避免(主要是由于其固有的安全问题),但在这个特定示例中,它似乎比我的代码执行得更好。

我不相信 exprtk 是线程安全的,所以我怀疑多线程有很多选择。

C++为了加快速度,可以使用调车场算法和反向抛光符号,但仅从这个比较中,我就对和之间的速度差异感到惊讶Python。这种速度差异有明显的原因吗?
有更多的开销exprtk还是我的代码完全是垃圾?大概是后者……

编辑

我使用 exprtk 库的原因是阅读了这个数学解析器基准测试。

0 投票
0 回答
303 浏览

c++ - C++ exprtk - 它可以在一个类中使用吗?

我想从 exprtk 调用一个类的函数。(http://www.partow.net/programming/exprtk/

我想用这个工具包用 symbol_table.add_function 注册一个函数。因此,需要从该工具包提供的 ifunction 派生这样的类:

是否可以以某种方式包含这个结构,一个类可以访问它并且这个结构的 operator() 可以访问类中的数据?一种可能性是将该类的指针传递给结构的构造函数。有没有更好的办法?

0 投票
0 回答
336 浏览

c++ - Exprtk 评估和返回字符串表达式

我正在评估使用 exprtk 来评估字符串表达式(例如,“a”+“b”),因此,我试图创建一个 std::string 解析器(exprtk::parser)。

这会在编译时抛出一堆错误,这些错误是关于多个实例化为相同签名的重载方法(parser::operator() 和 parser::get_variable())。

我没有在文档中找到任何可以执行此操作的内容,尽管它说它处理字符串类型。

我怎么能做到这一点?

0 投票
0 回答
179 浏览

c++ - 将 exprtk 变量分配为向量成员

我在这里问了一个非常具体的问题,但我意识到问题出在哪里,而且问题更笼统。看了所有exprtk的例子和代码片段,大家都用exprtk的基本方法add_variable作为

从来没有

有原因吗?我在 exprtk 的 readme.txt 上找不到任何东西,只是从未提及,他们立即切换到在与 c++ 向量相对应的字符串表达式中添加一个向量,这不是我想要的情况。

在我的情况下,我在字符串上有几个随机名称的变量,我想在一个容器内的双变量上匹配它们。链接问题中的示例似乎表明这不起作用。

有任何想法吗?

0 投票
0 回答
71 浏览

c++11 - 解析方程后崩溃

应用程序希望将字符串方程解析为数学并将数据返回给用户。为此,使用的库是exprtk

为了便于分析,我分享了最小工作代码 最小工作代码

当应用程序将字符串解析为背靠背的代码时[多线程但锁定]

现在代码总是崩溃

更新 pastebin 代码使用 main 更新的新代码已添加主要和最小工作代码。所有的shared_ptr已被删除。现在它们是正常的对象。至于exprtk的reset功能已经改成原来的了

并且gdb的回溯已添加回溯

0 投票
1 回答
306 浏览

c++ - 将 exprtk 与自定义类的对象一起使用

我正在尝试学习如何将解析库exprtk与自定义类的对象一起使用 - 我仍在学习 C++,tbh 但我可以编写功能性的非 OO 代码。

我正在尝试遵循repo 中的示例,但使用我已经创建的对象。

这是我的代码:

类定义:

以及调用/测试此类对象的函数(在同一个 main.cpp 文件中)

尝试编译时遇到以下错误。行号已关闭,因为我有一些代码被注释掉了。

我认为问题在于我不能使用,check_function<myvector2>();因为 myvector2 不是一种类型。但是我应该如何让它在我的特定课程上发挥作用myvector2呢?

0 投票
1 回答
249 浏览

c++ - ExprTk,获取表达式中的符号/变量列表

我想从 ExprTk 中的表达式中获取符号列表(不是我注册的符号,而是表达式中的符号。例如,当表达式是

我需要将 x 和 y 作为列表/向量之类的结果。我怎样才能做到这一点?

0 投票
2 回答
293 浏览

c++ - 从 exprTk 获取向量作为输出

我似乎无法从 exprTk 获得矢量输出。我认为它应该相对简单,但在手册中我只能找到如何输入矢量而不是如何输出矢量。

我目前拥有的是以下内容:

我想要的输出只是向量z。我该怎么做,或者我做错了什么?

0 投票
0 回答
118 浏览

c++builder - 10.2下编译找不到erf、erff等

我尝试编译 Arash Parto 的 C++ 数学表达式库 ( http://www.partow.net/programming/exprtk/index.html )。不舒服。我没有成功使用 10.2。erf、erff等都没有找到。

文件尝试编译:

========================================

错误日志:

在 Remy Lebau 的建议之后,我尝试了以下方法

@RemyLebeau:感谢您的建议。不过我觉得很没用。。。。。。

我试过(当然没有**):

==> [bcc32c 错误] exprtk.hpp(1199): 全局命名空间中没有名为“erff”的成员

然后我尝试了:

==> [bcc32c 错误] exprtk.hpp(1198):命名空间“std”中没有名为“erff”的成员

新文件2.cpp

在#include "exprtk.hpp" 中修改后:

我现在得到:[ilink32 Error] Fatal: Exceeded memory limit for block Publics in module File2.cpp