0

我正在开发自定义语言,一切正常,但我停止添加对标准函数的支持,如 getchar()、fopen() 等。我的想法之一是解析可视 .lib 文件,但这是一项艰巨的任务(例如,由于缺乏规范)。你有其他想法吗?它是如何用像 D 这样的语言制作的?

编辑:我想要实现的是能够使用系统功能(例如打开文件,使用套接字),但无需从头开始编写。我需要一些方法来访问已经编写好的库/dll。

最简单的解决方案是加载例如 C 标准库并调用这些函数(之前设置堆栈),但我需要有一些方法来获取此代码(组装)。

4

1 回答 1

1

通常,您会创建自己的对您的语言有意义的标准库,而不是使用 C 标准库。您为什么要编写自己的语言,并且不应该将其纳入标准库的设计中?

一般来说,为了与 C 库兼容,我发现最常见的方法是用不同的语言重新表达库的接口。Python 为此提供了ctypes模块。在 .NET 中,您将使用 P/Invokes。这会在您翻译界面时带来一些手动工作和出错的机会,但它比自动化过程更简单、更强大。

此外,.NET 的设计使得 .NET 库可以从 .NET 中的任何语言实现访问,只要库和语言设计正确。特定语言可能有自己的需求,由它们自己的标准库来满足,但是控制台 i/o 之类的东西都在一个地方,不需要每种语言都重新发明。

于 2012-04-15T22:30:26.943 回答