包括库在内的语言设计问题

时间:2014-07-15 08:55:34

标签: c++ compiler-construction language-design code-translation

我正在编写一个编译器,它将我编写的一种语言(称为SLang(目前这些文件只有几个推,而不是它的重要))编译成C ++(最终是ELF,Mach-O和PE,但后来会出现)。这是我的第一个编译器,并想知道包含库的最佳方法?在c / c ++中,只是通过复制和粘贴来导入库(最糟糕的是。我确定会有更复杂的东西在那里)。这是编译器的最佳方法吗?对于那些无法匹配gcc / visual c ++ / clang预处理器的人来说,有更有效的方法吗?提前感谢您提供任何帮助。需要明确的是,我并不是要求具体的代码,只是提出如何做的想法。

Side Note 如果有人知道任何编译器特定的论坛或irc频道,我很想知道它们是什么。我已经查看并查看过,除了#gcc或#clang等产品的特定内容之外,还没有找到。

编辑:我上面错过了。我知道只有头文件被粘贴到包含它的文件中,然后链接器将源文件与更多的源文件和/或库链接起来。然而,我仍在寻找包含库的最有效方法,而无需为SLang编写链接器

1 个答案:

答案 0 :(得分:0)

你没有提供一个小小的" Hello World"您的编程语言示例,并且,您链接,没有直接显示任何示例。

过去尝试做类似的事情。

你可能想看看D,因为它是一个类似的已知案例:

http://dlang.org/index.html

大多数编程语言没有头文件,但是,如果编译为C或C ++,可能会生成头文件。

您的编译器/编程语言如何处理单独的文件? 您的编译器/编程语言如何定位单独的文件?

我建议您的编程语言支持名称空间或模块。 " Plain C"和" PHP",最初没有名称空间。

类似的东西:


文件:" CollectionExample.sprg"


namespace CollectionExample;

import Collections = "c:\\slang\\Collections.slib";

...

void main()
{
  // do something with definitions in "Collections"
}    
...

它可能会生成C ++文件,如:


文件:" CollectionExample.hpp"


...


文件:" CollectionExample.cpp"


#include "c:\\slang\\Collections.hpp"
#include "c:\\slang\\CollectionExample.hpp"
...

我还建议,在您的编程语言中,使用与主程序不同的文件扩展名或文件后缀。

干杯。