【发布时间】:2017-10-29 14:44:48
【问题描述】:
我正在开发一个将被引导的编译器,即编译器将从源代码编译自己。我正在实现一个精简的 C++ 版本的编译器作为垫脚石。我担心的是,随着时间的推移,真正的编译器将支持 C++ 实现不支持的特性,而编译器源代码将利用这些特性。一旦发生这种情况,C++ 实现将无法使用,并且失去了从无到有的能力。
可以重用 git 历史记录以从以前的状态开始并朝着最终结果工作。另一种选择是确保基于 C++ 的编译器始终能够编译“真实”编译器,方法是根据需要扩展 C++ 版本,或者永远不允许在真实编译器的源代码中使用不受支持的功能。这两者都有自己的缺点。我想知道是否有其他技术适用于其他语言。
维护编程语言的引导能力的好方法是什么?
对于好奇的,结帐http://plange.tech
【问题讨论】:
-
你在试验哪种语言?
-
您的语言是否公开记录,您的实施是否为免费软件?如果是这样,请提供一些链接。
-
顺便说一句,您的问题在 SO 上有点偏离主题,但在 softwareengineering.stackexchange.com 上却是强烈的主题;也许应该迁移到那里...
-
网站是plange.tech。它仍然是 pre-alpha,所以还没有好东西可以玩。至于移民,我不会反对。版主会这样做吗?
-
在这个阶段,最直接的做法是保留 git 的演变历史。当您甚至还没有开始运行时,为什么还要用这种想法来混乱自己并取得进展?
标签: compiler-construction bootstrapping