- 主题:碰到一个难题了字符串转表达式
我也是这么想的,不知道这个fork编译执行的效率如何。
目前三种值得一试:
1. 内嵌python,后续需要频繁在c++和python之间传递参数,效率?
2. 自己写表达式分析程序
3. 你这种方法,每次编译成一个动态库,动态加载执行,效率?
【 在 e729 的大作中提到: 】
: 把这个表达式写到一个.c文件中,fork新的进城编译执行它,取得结果。
: 以上是十数年前,本老某个学期面对的最后一道C大作业题受挫时,给自己预备的的最后一招
:
--
FROM 114.249.195.*
效率是最不需要担心的了吧
这个方法只是个设想,我并没有用过,其中有个bug也是刚刚发现:子进程调用gcc编译后,如果成功,就不能再次调用execl执行。流程应该是当父进程发觉子进程返回成功后,调用execl执行
这是一个看似很黑客实际是一个投机取巧的方法,只有在黔驴技穷时才应该使用。你还是百度一下算法吧,一堆一堆的
【 在 anything1999 的大作中提到: 】
: 我也是这么想的,不知道这个fork编译执行的效率如何。
: 目前三种值得一试:
: 1. 内嵌python,后续需要频繁在c++和python之间传递参数,效率?
: ...................
--
FROM 119.114.248.*
你这个方法的问题是:需不需要安装python?
【 在 vwx 的大作中提到: 】
: 内嵌python
--
FROM 114.249.195.*
你这个方法比较硬核:)
【 在 yytree 的大作中提到: 】
: 看看C实现的basic源码
: 解释执行
: 看看怎么计算表达式的
: ...................
--
FROM 114.249.195.*
看了一下介绍,正是我想要的!!
【 在 meizhi 的大作中提到: 】
: exprtk很香
: 发自「今日水木 on 22041216C」
--
FROM 114.249.195.*
exprtk不错。
【 在 dormouseBHU 的大作中提到: 】
: 这样的库很多吧, 比如 muParser 、exprtk、GNU libmatheval
: 或者程序里嵌入个脚本解释器,python 、 perl 一类的。这也是很常见的操作。
:
--
FROM 114.249.195.*
根本方法还是自己写个逆波兰式, 这个很简单
github上应该有现成代码
当然用现成的库还是最容易的,比如前面提到的exprtk
【 在 anything1999 的大作中提到: 】
: 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
: 各位有什么思路
--
FROM 101.86.20.*
借用下sqlite的库就行了
【 在 anything1999 的大作中提到: 】
:
: 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
: 各位有什么思路
--
FROM 111.9.14.*
典型的第三方库不就是yacc这种?
【 在 anything1999 的大作中提到: 】
: 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
: 各位有什么思路
: --
: ...................
--
FROM 114.242.248.*
直接调用python
【 在 anything1999 的大作中提到: 】
: 程序里面有lambda表达式,这个表达式诸如y=3+x, 其中这个3+x部分想让用户输入,用户也可以输入3*x等,然后把用户输入的字符串转为表达式,以便后续计算,之前c#有第三方库,python之类的也有eval函数(这个可能还不太一样,我不需要立即求值),c++没有找到类似的功能或者库。
: 各位有什么思路
--
FROM 182.118.236.*