将字符串解析为C++中的一行代码
Parsing string as a line of code in C++
是否可以将字符串变量解析为C++中的实际代码行?例如,这个字符串"x=0"
是否可以解析为实际代码并将x
(程序中的某个随机变量(的值设置为零?我打算做的是,我想用C++制作一个简单的绘图仪。用户输入函数(该函数将以x
和y
表示,值为零(以绘制为字符串(如2*y+x
(,然后将其转换为代码对象,然后使用循环进行相应的计算。
因为C++是一种编译和链接的语言,所以不适合即时评估。
但是我过去通过嵌入一个 Python 解释器来动态评估 Python 代码作为字符串并将结果传递给C++代码,从而实现了与您过去通过C++目标类似的目标。
可以嵌入C++程序中的其他一些流行的脚本语言是Lua和Squirrel。
在Java中,我通过嵌入Groovy解释器做了同样的事情。
您需要通过"嵌入"脚本语言解释器将其集成到代码中,然后通过"封送处理"过程将值从脚本语言代码传递到C++代码
如果你真的想要C++可以解释的语法,理论上可以为语言的子集开发一个动态解析器和解释器,但C++是一种复杂的语言,这样的任务将是一项艰巨的任务,充满了困难,本质上是使用错误工具的情况。
简短的回答是"否"。 你不能像这样"动态"编译C/C++,因为它是一种编译语言,而不是解释语言。
但这里有一个想法:你可以使用 SpiderMonkey API 嵌入一个 JavaScript 解释器,它可以解释你所有的示例代码片段,因为 JavaScript 语法在这方面与 C/C++ 非常相似。
简短的回答是"是"。使用C++ JIT 动态编译C++就可以了。从 llvm.org
即时 (JIT( 代码生成系统,目前支持 X86、X86-64、ARM、AArch64、Mips、SystemZ、PowerPC 和 PowerPC-64。
假设您愿意将大部分编译器链接到您的程序中以实现此目的。通过共同努力,您应该能够在现有 API 之上编写"eval"。
- 读取最后一行代码算法 - c++ 时出现问题
- 需要将一行代码从C++ Qt翻译成PyQt
- 如何使代码打印文本文件中的第一行?
- 这段代码的最后一行在做什么?
- 在一行代码中理解 index++
- 单步执行代码时重复上一行
- 代码无尽写入文本文件的第一行
- 我可以在一行代码中将向量中与条件匹配的所有元素插入到集合中吗?
- a = !5 < a;在这一行代码中究竟做了什么?
- 无法理解代码的特定片段:这是一个函数,只是一行还是什么
- std::vector 从一行代码清空到下一行代码
- 我如何使一行代码可以选择,但在已经选择过一次后不重新选择
- 如何将具有多行代码的内联函数视为一行?
- C++在 while 循环后添加一行代码会导致错误
- 一行代码的Arduino运行时间
- 因为一行不相关的代码,速度相差那么大
- 在一行C 中,该代码后缀和前缀的输出的逻辑是什么
- 如何将.txt文件中的多维数组放入代码中,并一次打印一行
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- 分析执行C++代码的每一行所花费的确切时间