English 中文(简体)
部分地将C++与特定领域语言混为一谈
原标题:Partially parse C++ for a domain-specific language

我想创设一个专门领域的语言,作为增强的C++语言。 我将需要两类内容:

  • Top-level constructs for specialized types or declarations
  • In-code constructs, i.e. to add primitives to make functions calls or idiom easier

这些语言将用于科学计算,最终将翻译成C++便衣。 选择了C++,因为它似乎在以下几方面提供了很好的妥协:方便使用、效率和广泛图书馆的提供。

由于C++轴心的复杂性,以前使用弹性体和干.的企图失败了。 现有的教区仍然在某些建筑上失败。 因此,我们希望开始,但建立在更好的基础上。

你们是否知道类似的项目? 如果你试图这样做,你会使用什么工具? 主要陷阱是什么? 您是否提出了yn的建议?

问题回答

有许多(单独)尝试在C++语言中使用特定域名。

通常称为DSEL,Domain specific Embedded Language<>。 例如,你可以研究<条码>Boost.Spirit syntax,或<条码>Boost.rdb(在助推栏中)。

这些图书馆完全安装了C++图书馆,使用C++的合成物。

如果你想掩盖一些复杂性,你可能会在几个宏观上增加。

如果你给我们一些工作以:

您可以尝试扩大公开来源 Elsa C++ parser(现已成为“Catherine Pork”项目的一部分):

https://wiki.mozilla.org/Pork

扩大C++的方法不是试图扩大语言,因为新的基础编纂者发布新特征,这种语言将极其困难,而且可能中断,而是书写阶级图书馆,支持你的问题领域。 这是自语言开始以来,C++方案拟定工作始终如一。

如果你真想延长C++,你就需要全方位的C++平方言和类型分辨。 正如你所发现的那样,这非常困难。 你的最好解决办法是找到一个现有机制并加以修改。

Our DMS Software Reengineering Toolkit is an infrastructure for implementing langauge processors. It is designed to support the construction of tools that parse languages, carry out transformations, and spit out the same language (with enhanced code) or a different language/dialect.

DMS有一个完整的C++ Front End,即: parses C++, 建造抽象的yn子树和符号表(例如,所有这种名称和类型分辨)。

DMS/C++前端以源形式向投管处提供,以便能够根据具体情况定制,达到你想要的效果。 您将德国航天中心界定为C++前端的延伸,然后撰写转变,将你的特别建筑变成“万伊”C++的构造,然后产生可观的汇编结果。

DMS/C++被用于各种转变任务,包括如你所述扩大C++的任务,包括大规模重组大型C++应用的任务。 (见该网站上的出版物)。

为了解决你的第一颗子弹,也许你可以使用C++0x的新特征“初始用途清单”和“用户界定的垃圾”来避免需要一个新子。 它们也可以帮助第二个子弹。





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?