Language agnostic 在一种编程语言中,编译器需要哪些语言特性?

Language agnostic 在一种编程语言中,编译器需要哪些语言特性?,language-agnostic,compiler-theory,Language Agnostic,Compiler Theory,编程语言似乎经历了几个阶段。首先,有人想出了一种新的语言,Foo语言。编译器/解释器是用另一种语言编写的,通常是C或其他一些低级语言。在某个时刻,傻瓜会成熟和成长,最终有人会在某个地方为傻瓜自己编写一个编译器和/或解释器 我的问题是:语言特性的最小子集是什么,这样人们就可以自己实现该语言了?编译器可以用a编写,而-a基本上是任何图灵机器的编译器/解释器,所以任何语言都应该足够了:)一个选项是a。这可以用于构建许多更高级别的构造。我相信这就是LISP所走的道路。 我不确定C的起源,但我认为它是从几

编程语言似乎经历了几个阶段。首先,有人想出了一种新的语言,Foo语言。编译器/解释器是用另一种语言编写的,通常是C或其他一些低级语言。在某个时刻,傻瓜会成熟和成长,最终有人会在某个地方为傻瓜自己编写一个编译器和/或解释器


我的问题是:语言特性的最小子集是什么,这样人们就可以自己实现该语言了?

编译器可以用a编写,而-a基本上是任何图灵机器的编译器/解释器,所以任何语言都应该足够了:)

一个选项是a。这可以用于构建许多更高级别的构造。我相信这就是LISP所走的道路。

我不确定C的起源,但我认为它是从几个系统调用开始的,以实现分支、循环、赋值和单字符I/O,并以此为基础构建的。

理论上,令人惊讶的是,它很少。A会说你需要的只是A或类似的东西


然而,从实用的角度来看,在图灵机器中实现编程语言并不是一件愉快的事情。我想说的是,至少,您希望拥有所有常用的控制流构造、基本数据类型、子例程以及数组和结构。这应该足以让您在语言本身中实现该语言的子集,然后您就可以从那里引导自己了。

我假设汇编器会进行切割

我的问题是:语言特性的最小子集是什么,这样人们就可以实现语言本身


除了编译本身之外,不要求该语言对任何事情都有用吗?我向大家介绍
无用的
,在这种语言中,每一个文本都是一个适当的程序,意思是“一个接受任何输入并产生自己的程序”(也称为
无用的
编译器)。

参见:不一样,但相关的阅读:“理论上,理论和实践没有区别。在实践中,有。”--我忘了是谁了。“你所需要的只是一台图灵机器”让我笑了,因为它基本上是已知的最强大的“合理”计算模型:-)我更喜欢Jon Skeet的语言。但是为了论证起见,让我们确保该语言是有用的,至少是图灵复杂语言。这肯定是一种无用的编程语言。@Brad:是的,是的@马修:你确定琼恩·斯基特的语言可以自行编译吗?@Rafal:你得问问他;我很确定这正是他想要的,出于恐惧。