我在boost邮件列表上发现了以下帖子(强调我的):
大家好,
有没有人知道现有的精神/ lisp实施,是否有兴趣在开源中开发这样的项目?
还没有,AFAIK.
我将为Spirit2编写一个示例,以补充那里的tiny-C虚拟机.同样有趣的是,方案(或至少它的一个子集)可以用纯c ++实现.没有解析,只是C++中的纯DSEL.现在,想象一个针对此DSEL(通过C++)的解析器 - 源代码转换器.从本质上讲,您的方案代码将被编译为高效的C++.
有人真的这样做过吗?我会对这样的DSEL非常感兴趣.
在面向数字的语言(Matlab,Fortran)中,范围运算符和语义在处理多维数据时非常方便.例如:
A(i:j,k,:n) // represents two-dimensional slice B(i:j,0:n) of A at index k
Run Code Online (Sandbox Code Playgroud)
遗憾的是,C++没有范围运算符(:).当然它可以使用范围/切片仿函数进行仿真,但语义不如Matlab干净.我在C++中使用矩阵/张量域语言进行原型设计,我想知道是否有任何选项可以重现范围运算符.我仍然只想依赖C++/prprocessor框架.
到目前为止,我已经查看了可能是合适选项的增强波.
还有其他方法可以将新的非本地运营商引入C++ DSL吗?
我知道你不能添加新的operator.am专门寻找解决方法.我提出的一件事(非常丑陋的黑客,我不打算使用):
#define A(r) A[range(((1)?r), ((0)?r))] // assume A overloads []
A(i:j); // abuse ternary operator
Run Code Online (Sandbox Code Playgroud)