3

很抱歉提出这样一个开放式问题,但我想在 C++ 中模拟一些合成程序集(不是用于真正的处理器),并且我想将程序集与其运行的模拟器的实现分离。

编写 DSL 或类似的方法似乎是显而易见的方法,我对此有一些经验,在 Groovy 中做过类似的事情(实际上是 DSL 和解释器的混合体)。

boost::proto 似乎是显而易见的选择,但我发现文档完全无法理解,尽管正如我所说,我掌握了一些基础知识。

是否有任何替代教程或类似教程可以解释 - 以侧重于编写 DSL 的实用性而不是 AST 理论等的方式 - 如何做到这一点。还是有替代方案?现在,我坚持将汇编指令实现为构成模拟器的类的方法,这使得它们的绑定非常紧密,并且极难维护代码库。

4

1 回答 1

1

我支持建议您在这里可能遇到不匹配的 XY 问题的评论。

同时,对嵌入式 eDSL应用Boost Proto的最佳介绍是在 Dave Abrahams 的 cpp-next.com 博客上。可悲的是,这已经停播了。

Boost Proto 的作者 Eric Niebler 已提议根据要求向人们发送这些页面的原始转储:

C++ 社区正在遭受失去 cpp-next.com 网站以及曾经托管在那里的所有精彩内容的痛苦。在过去的 2 个月里,我收到了很多关于网站和我的“富有表现力的 C++”系列文章的命运的问题。作为回应,我将在此博客上重新发布我的旧文章。但我很忙,这需要时间。同时,如果您迫切需要阅读 Boost.Proto 和 C++ 中特定领域嵌入式语言的介绍,并且您不介意阅读原始降价,请给我发电子邮件。我会把我有的发给你。

http://ericniebler.com/2014/05/24/cpp-next-com-and-the-expressive-cxx-series-2/

与此同时,waybackmachine 也有一些,例如:

于 2015-08-17T21:46:31.747 回答