通过算法将冗余代码优化为循环
Optimizing redundant code into loops algorithmically
我正在为相当基本的脚本语言编写一个转换器,但是它似乎缺乏使用for循环的能力。这使得代码非常混乱和冗余,例如:
for(int i = 0; i < 5; i++) {
ECHO Hello World!
SLEEP 500
}
用这种语言编写的脚本最终看起来像这样:
ECHO Hello World!
SLEEP 500
ECHO Hello World!
SLEEP 500
ECHO Hello World!
SLEEP 500
ECHO Hello World!
SLEEP 500
ECHO Hello World!
SLEEP 500
等等。基本上,我要把这个脚本转换成c++,有没有可能减少所有这些重复调用?我曾考虑过循环并查找重复的代码,但是问题出现了,我无法处理这样的代码:
ECHO 1
SLEEP 500
ECHO 2
SLEEP 500
ECHO 3
SLEEP 500
ECHO 4
是否有更简单的方法来识别这些模式,或者我需要深入研究更复杂的东西,比如神经网络?
我不知道"更简单"。
你想要的是一个克隆检测器来检测参数克隆。这将找到重复的克隆序列,使得具有参数的克隆可以被实例化以产生精确的代码实例。
您的示例循环包含的是参数化克隆的重复实例:
ECHO n
SLEEP 500
所以序列的第一个抽象是:
for n in {1,2,3,4}
ECHO n
SLEEP 500
序列上的for循环很容易转换为:
for n=1,4 step 1
ECHO n
SLEEP 500
我认为这是你想要生成的代码。
所以你的问题是得到一个参数克隆检测器
请参阅关于如何在抽象语法树上实现参数克隆检测器的技术论文。这些都不是容易构建的工具。但是,如果您构建了一个,那么如果您可以将脚本语言解析为ast,那么这将为您提供核心参数克隆。然后,您可以执行您认为有用的其他优化。
相关文章:
- 如何优化循环以插入到数据库中
- JavaScript代码优化-创建可重用类
- Javascript代码中断循环
- 代码优化,如何使其看起来不错
- Javascript 代码未循环
- 优化循环,避免浪费查找
- 如何优化循环函数
- 为什么这个js代码可以循环
- JavaScript:在循环中优化循环
- NodeJS:代码优化和变量作用域
- Jquery代码优化Mouseenter Mouseout
- 优化循环以减少绘制次数
- 有人能告诉我如何替换下面的javascript代码与循环
- 优化循环在谷歌应用程序脚本
- PHP和Javascript.代码优化
- 为什么循环后的代码在循环内的dom更改之前执行
- 通过算法将冗余代码优化为循环
- 在Appcelerator钛我如何禁用javascript代码优化,使调试更容易
- Node.js中的异步代码和循环
- 简单的jquery代码优化