gpt4 book ai didi

c++ - 针对某些脚本语法中描述的问题,在 C++ 中实现求解器

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:18 24 4
gpt4 key购买 nike

我有一个关于如何编写 C++ 代码来解决一般类问题的一般性问题。问题类别用一些脚本语言描述,将由 c++ 程序动态读取。例如。问题可以描述如下:

syms a b c x
sol = solve(a*x^2 + b*x + c == 0)
sola = solve(a*x^2 + b*x + c == 0, a)

这里我只是使用 MATLAB 进行说明,我并没有尝试构建任何类似 MATLAB 的东西。我真正想要的是找出通常如何设计一个 C++ 程序,该程序将接受一个脚本,该脚本描述了一些计算指令,然后读取/解释脚本中描述的逻辑,然后执行所描述的计算。

最佳答案

程序的总体架构如下所示:

enter image description here

(来自维基百科上的 parsing 文章)

有很多教程涵盖 lexical analysis , parsing并构建解析树,或者更常见的是构建抽象语法树 (AST)。参见,例如,Kaleidoscope tutorial来自 LLVM。

构建 AST 后,您需要将其翻译成某种内部表示形式(例如字节码)并将其传递给解释器或虚拟机。在某些情况下,可以跳过此步骤并直接使用 AST。

解释器将采用上一步生成的输入,构建代数问题的运行时表示(这也是一种树状数据结构)并将其传递给实际的求解器。

求解器将分析问题的结构并应用相关方法来找到方程的解。例如,如果 x 是一个变量,abc 是您示例中的参数,它可以检测到它是一个二次方程,并应用众所周知的公式求解。

关于c++ - 针对某些脚本语法中描述的问题,在 C++ 中实现求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com