假设我写了一种编程语言;同名,我称之为lang。
为了开始编写lang的漫长旅程,我决定从编写 lang 本身开始。我实际上无法运行它,因为没有什么可以运行自行运行的程序。
因此,我首先用Java为lang编写另一个编译器。这一次,当我完成后,我决定将其转换为字节码,并保留它。我现在有一个可以工作的编译器,它将我所有的语言代码转换成字节码。
所以我决定将我的语言自编译器插入到我刚刚用 Java 制作的编译器中。然后我将自编译器转换为字节码,并丢弃 Java 编译器。我现在有一个lang编译器,纯粹是自己写的,转换成字节码,可以使用了。
这创建了一个可靠的程序,我理解所有这些,但我的问题是,相对于 JVM 的编译器设计,如果我决定发布我的语言的更新怎么办?我该如何更新字节码?我是否只是简单地用旧版本重新编写语言的更新版本?
我问这个是因为这是我想做的。自己编写一种不存在的语言,然后通过首先在 Java 中创建编译器将其引导到 JVM。
这与使用 C++ 所做的相同。编写了带有类的 C,然后在其中编写了 C++,最后放弃了带有类的 C,而使用了自举的 C++。但是,他们到底是如何更新语言的呢?