BuildIt 创建领域特定语言开源项目

我要开发同款
白开水不加糖2021年03月02日
122阅读

技术信息

开源地址
https://gitee.com/mirrors/buildit
授权协议
MIT

作品详情

Build→It 是一个轻量级的基于类型的C++Multi-stageprogrammig框架。可以让你在几乎不了解编译器的情况下轻松实现领域特定语言(domai-specificlaguages,DSL)。

除了使用运算符重载提取表达式和语句外,该工具还支持提取丰富的数据相关的控制流,如if-the-else条件和for和while循环,并使用新颖的重执行策略来探索程序中的所有控制流路径。

Build→Itturs-

template<typeameBT,typeameET>dy_var<it>power_f(BTbase,ETexpoet){dy_var<it>res=1,x=base;while(expoet>1){if(expoet%2==1)res=res*x;x=x*x;expoet=expoet/2;}returres*x;}...itpower=15;cotext.extract_fuctio_ast(power_f<dy_var<it>,static_var<it>>,"power_15",power);...itbase=5;cotext.extract_fuctio_ast(power_f<static_var<it>,dy_var<it>>,"power_5",base);...

ito-

itpower_15(itarg0){itvar0=arg0;itvar1=1;itvar2=var0;var1=var1*var2;var2=var2*var2;var1=var1*var2;var2=var2*var2;var1=var1*var2;var2=var2*var2;itvar3=var1*var2;returvar3;}itpower_5(itarg1){itvar0=arg1;itvar1=1;itvar2=5;while(var0>1){if((var0%2)==1){var1=var1*var2;}var2=var2*var2;var0=var0/2;}itvar3=var1*var2;returvar3;}

Build→It使用纯基于库的方法,并且不需要任何特殊的编译器修改,这使得它具有极高的可移植性,并且易于集成到现有的代码库中。使用Build→It很简单,只需包含一些头文件,并针对Build→It库进行链接。

Build→It使用声明的变量和表达式类型来确定绑定时间。添加了2个新的通用类型-static_var和dy_var,使用户程序可以分为2个阶段。这些类型可以任意嵌套以产生更多阶段的代码。

什么是multi-stageprogrammig,以及为什么multi-stageprogrammig对高性能DSL很重要?具体可查看官方发表的一篇论文。

功能介绍

Build→It 是一个轻量级的基于类型的 C++ Multi-stage programming 框架。可以让你在几乎不了解编译器的情况下轻松实现领域特定语言(domain-specific ...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论