【问题标题】:read function (and "create") from file (C++) [duplicate]从文件(C++)中读取函数(和“创建”)[重复]
【发布时间】:2016-02-16 01:26:45
【问题描述】:

我想知道是否有可能,例如读取包含以下内容的文件:

a+b*c

并且我的程序“创建”一个函数来执行此操作,如果我修改文件(如 a+b*c+2),程序会读取此更改并更新此函数的功能。好吧,我在 C++ 的基础上没有扎实的背景,我不知道我所问的是否只是愚蠢的。我在物理模拟中的工作需要(或者类似的东西可能很好),其中模型主要由平衡函数(和一些其他参数)定义,所以我认为如果我可以制作一个程序来无需为每个模型编写特殊代码即可测试此模型...

谢谢!

【问题讨论】:

  • 您想创建一个可以在代码中调用的函数foo(a,b,c),用于评估文件中的表达式?
  • 不,这是不可能的。您必须实现解析器和解释器,或者依赖 c++ 编译器动态创建共享库,然后加载它以执行语句。
  • 您正在寻找创建方程解析器和词法分析器
  • @AbdulRehman 是的,类似的东西......但我缺乏信息,我不知道从哪里开始我对这种想法的研究。你有什么书目要推荐给我吗?
  • @RolandDeschain stackoverflow.com/questions/4582398/… 这里是您需要的很好的解释和有用的链接。

标签: c++ code-generation


【解决方案1】:

C++ 不是解释代码。所以你只能在源代码中编译硬编码表达式。但是,您可以自行评估表达式。可以看一些解决方案here

【讨论】:

  • 投反对票的人能解释一下原因吗?
  • 好吧,我没有投反对票。但是您的答案看起来更像是评论。此外,这个问题非常广泛,因此可以说完全是主题。
  • 它提供了带有链接的解决方案。你怎么说它是评论?
  • 这里不赞成仅链接的答案。至少在你的答案中列出要点。
  • @user1969104:如果链接回答了问题,您可能应该将此问题标记为重复问题。
【解决方案2】:

当然这是“可能的”,实际上这就是 matlab、mapple 或任何其他正式计算软件/lib 所做的。 顺便说一句,如果您只处理 */+- 基本运算符,编写一个可能会非常简单,并且可能会变得越来越复杂,具体取决于您要使用的内容(sin cos、exp、log 等)

在您的情况下,读取输入并构建具有最终值的内部树的基本实现看起来像这样:

  +
a   *
   b  c

我相信你可以找到很多关于它的文档。

【讨论】:

  • 嗨!感谢您的回答,您可以参考一些有关该主题的书籍或文档吗? @OznOg
猜你喜欢
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 2021-02-13
相关资源
最近更新 更多