目前,我已经学会了按照这个指南编写自己的编译器:https://craftinginterpreters.com/。但是作者没有提到如何为该语言实现一个模块系统。我在互联网上也找不到任何直接的教程,让我知道我应该学习什么来实现它。
如果有人知道任何关于这个主题的好材料,我将非常感谢。
发布于 2020-04-19 14:47:23
你不会找到一个好的关于构建模块系统的教程,因为对于一个好的模块系统是什么样子没有一个共识,而且因为很多细节将取决于你的语言的确切性质。
如果你看一下,你会发现,关于如何为不同的语言修复损坏的模块系统的讨论很长时间。你会发现这些讨论,因为几乎每种语言都是从一个模块系统开始的(或者有一个模块系统附加了自己),但并没有像期望的那样工作。实际上,每一种语言都不得不实现一个新的模块系统,并由此产生向后兼容性问题,或者听天由命于原始实现中出现的任何不可纠正的缺陷。通过阅读这些讨论,您将学到很多东西。
这其中的部分原因是,许多语言是由程序员设计的,他们几乎没有或根本没有使用合理的模块系统的经验。尽量不要落入这一类。如果你有使用一个或多个模块系统的经验,可以根据这些经验来设计一个更好的系统。并尽可能多地阅读那些系统的可靠批评者的资料。
不要期望第一次就把它做得完美:-)确保你在设计阶段就经常练习你的系统,并且能够在不影响遗留代码的情况下进行调整。
祝好运!
https://stackoverflow.com/questions/61299483
复制相似问题