有没有不编译而是仅翻译成另一种语言的编程语言?我很抱歉这是一个愚蠢的问题,但是我只是想知道这是否是创建编程语言时的字面上的捷径。它会更容易(可能不是很快)但仍然可行吗?
有没有不编译而是仅翻译成另一种语言的编程语言?
这对我来说毫无意义。我对编译的定义是“从一种语言(源语言)转换为另一种语言(目标语言)”。
通常,源语言是人类编写的东西,而目标语言是机器代码(或asm),但这不是必需的。实际上,许多编译器被构造为多层,每一层都翻译成另一种中间语言(直到最后一层以目标语言发出代码)。
它与语言没有直接关系,而是特定的实现。我们以C为例,有C解释器,针对汇编代码的C编译器,针对(各种平台的)机器代码的C编译器,针对JavaScript的C编译器,针对Perl的C编译器等。
至于简化语言的实现:是的,适用于各种代码重用。
一种方法是分离编译器前端(从源语言转换为内部抽象表示)和后端(从内部抽象表示转换为特定平台的机器代码)。这样,您可以保留前端,并且仅在要支持另一个目标平台时才编写新的后端。您还可以保留后端,并且仅在要添加对另一种源语言的支持时才编写新的前端。
另一种方法是使用成熟的编程语言作为中间表示。例如,您的新编译器可能会生成C代码,然后任何C编译器都可以将其编译为机器代码。C ++的第一个实现正是这样做的。C作为编译器目标语言有很多缺点;已经做出努力来创建更适合该任务的语言(例如,参见C–,GHC在内部使用(Haskell编译器))。