问题标签 [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.
c++ - ExprTK 未知变量分辨率取决于表达式类型
我正在尝试为布尔表达式创建一个解析器。表达式中的符号是从类似 XML 的数据结构中读取的。
为类似的东西实现解析器很简单
通过使用“未知符号解析器”来使用 ExprTK,该解析器通过返回的字符串值将 ab 解析为字符串<a><b>some value</b></a>
。
但现在考虑 XML<a><b>5</b></a>
有什么方法可以编写一个未知符号解析器,它可以同时评估a.b == 5
和a.b == '5'
吗?
python - C++ Exprtk 与 Python eval()
问题如下。
一个文本文件包含数百万行算术 - 需要快速评估。
我一直在探索解决这个问题的选项,并使用不错的exprtk C++
库编写了一个小脚本。
该代码有效并且能够评估表达式,但比我想象的要慢。算术行可能会变得很长,这可能会使问题更加复杂。出于兴趣,我将评估时间与基本 Pythoneval()
命令的评估时间进行了比较,很惊讶它eval()
比 exprtk 快 3-4 倍!
这是C++
代码:
这是Python代码:
文本文件有一个非常基本的格式,一个新的算术行紧随其后。第一行的示例如下:
我应该对此感到惊讶吗?
我很惊讶,因为阅读文档强调 eval() 很慢并且通常应该避免(主要是由于其固有的安全问题),但在这个特定示例中,它似乎比我的代码执行得更好。
我不相信 exprtk 是线程安全的,所以我怀疑多线程有很多选择。
C++
为了加快速度,可以使用调车场算法和反向抛光符号,但仅从这个比较中,我就对和之间的速度差异感到惊讶Python
。这种速度差异有明显的原因吗?
有更多的开销exprtk
还是我的代码完全是垃圾?大概是后者……
编辑
我使用 exprtk 库的原因是阅读了这个数学解析器基准测试。
c++ - C++ exprtk - 它可以在一个类中使用吗?
我想从 exprtk 调用一个类的函数。(http://www.partow.net/programming/exprtk/)
我想用这个工具包用 symbol_table.add_function 注册一个函数。因此,需要从该工具包提供的 ifunction 派生这样的类:
是否可以以某种方式包含这个结构,一个类可以访问它并且这个结构的 operator() 可以访问类中的数据?一种可能性是将该类的指针传递给结构的构造函数。有没有更好的办法?
c++ - Exprtk 评估和返回字符串表达式
我正在评估使用 exprtk 来评估字符串表达式(例如,“a”+“b”),因此,我试图创建一个 std::string 解析器(exprtk::parser)。
这会在编译时抛出一堆错误,这些错误是关于多个实例化为相同签名的重载方法(parser::operator() 和 parser::get_variable())。
我没有在文档中找到任何可以执行此操作的内容,尽管它说它处理字符串类型。
我怎么能做到这一点?
c++ - 将 exprtk 变量分配为向量成员
我在这里问了一个非常具体的问题,但我意识到问题出在哪里,而且问题更笼统。看了所有exprtk的例子和代码片段,大家都用exprtk的基本方法add_variable作为
从来没有
有原因吗?我在 exprtk 的 readme.txt 上找不到任何东西,只是从未提及,他们立即切换到在与 c++ 向量相对应的字符串表达式中添加一个向量,这不是我想要的情况。
在我的情况下,我在字符串上有几个随机名称的变量,我想在一个容器内的双变量上匹配它们。链接问题中的示例似乎表明这不起作用。
有任何想法吗?
c++11 - 解析方程后崩溃
应用程序希望将字符串方程解析为数学并将数据返回给用户。为此,使用的库是exprtk
为了便于分析,我分享了最小工作代码 最小工作代码
当应用程序将字符串解析为背靠背的代码时[多线程但锁定]
现在代码总是崩溃
更新
pastebin 代码使用 main 更新的新代码已添加主要和最小工作代码。所有的shared_ptr
已被删除。现在它们是正常的对象。至于exprtk的reset功能已经改成原来的了
并且gdb的回溯已添加回溯
c++ - ExprTk,获取表达式中的符号/变量列表
我想从 ExprTk 中的表达式中获取符号列表(不是我注册的符号,而是表达式中的符号。例如,当表达式是
我需要将 x 和 y 作为列表/向量之类的结果。我怎样才能做到这一点?
c++ - 从 exprTk 获取向量作为输出
我似乎无法从 exprTk 获得矢量输出。我认为它应该相对简单,但在手册中我只能找到如何输入矢量而不是如何输出矢量。
我目前拥有的是以下内容:
我想要的输出只是向量z。我该怎么做,或者我做错了什么?
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