包含库的语言设计问题

Language Design issues with including libraries

本文关键字:问题 语言 包含库      更新时间:2023-10-16

我正在编写一个编译器,它将把我制作的一种语言(称为俚语(目前这些文件有些落后,但并不重要))编译成c++(最终是ELF, Mach-O和PE,但这将在稍后出现)。这是我的第一个编译器,想知道包含库的最佳方式?在c/c++中,库只是通过复制和粘贴来导入的(最坏的情况下)。我敢肯定还有更复杂的事情发生)。对于编译器来说,这是最好的方法吗?对于无法匹配gcc/visual c++/clang预处理器的人来说,是否有更有效的方法?事先感谢你能给予的任何帮助。只是要清楚,我不是要求具体的代码,只是关于如何做的想法。

边注如果有人知道任何编译器特定的论坛或irc频道,我很想知道它们是什么。我找了又找,除了针对某个产品的特定名称,比如#gcc或#clang,还没有找到。

编辑:我上面说错了。我知道,只是头文件被粘贴到文件中,包括它,然后链接器链接源文件与更多的源文件和/或库。然而,我仍然在寻找包括库的最有效的方式,而不编写俚语链接器

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

尝试做类似的事情,在过去。

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

http://dlang.org/index.html

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

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

我建议你的编程语言支持名称空间或模块。"Plain C"answers"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"
...

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

欢呼。