大家好,今天小编关注到一个比较有意思的话题,就是关于实现自举的编程语言有哪些的问题,于是小编就整理了3个相关介绍实现自举的编程语言有哪些的解答,让我们一起看看吧。
c语言怎么自举?
C语言实现自举的过程可以分为以下几个步骤:
1. 使用其他编程语言编写一个可以生成C语言编译器的程序,这个程序也被称为“引导编译器”。这个编译器可以将源代码文件(使用其他语言编写)转化为可执行的机器码。这个引导编译器可以是使用汇编语言或其他高级语言编写的。
2. 使用引导编译器将C语言编译器的源代码文件转化为可执行的机器码,生成一个“基础级别”的C语言编译器。
3. 使用这个基础级别的C语言编译器,将自身的源代码文件进行编译,生成一个更加高级别的C语言编译器。
4. 重复上述步骤,使用更高级别的C语言编译器生成更高级别的C语言编译器,直到生成一个完整的、功能齐全的C语言编译器。
自举的过程涉及到两个层次的编译器:一个是引导编译器,用于将其他语言编写的源文件编译为机器码;另一个是C语言编译器,用于将C语言源文件编译为可执行的机器码。通过不断使用更高级别的C语言编译器,最终可以生成一个完全由C语言编写的编译器。
c语言 基于 哪种 汇编语言?
c语言自己就是一种汇编语言,是用C语言编写的。
这里有一个概念,就是编程语言的自举。
自举(bootstrapping)字面理解就是自己能把自己给举起来,换做编程语言来讲就是,自己编译自己。也就是C语言能通过C语言自己编写自己的编译器。
完成自举通常需要3-4个步骤。
2、编译自举编译器。
3、通过自举编译器编译完整的编译器。
4、通过第三步里面的完整的编译器编译完整的编译器。
第四步得到的编译器就是一个自举编译器。
c语言的基本模块有哪些?
这是
一个五百行的C语言文件
写一个解释器不仅仅是对初级编译原理知识点的总结和运用,更是将自己培养为代码、程序乃至编程语言的设计师路上必经的一步。比如我不喜欢一个过于复杂的词法结构,希望词法分析器对应的函数不要超过100行,那么就取消了布尔值字面量,只要在标准库里加两句话:
也就行了。那么对应的,我也可以把内建函数的数量降至最少,比如对布尔值的或与非操作就可以用普通的函数实现:
但是表达“空值”的呢?这个值是必要的,对于一些不应当返回任何值的函数和特殊形式(比如所有的断言都为***),必须依赖以维持“一切都是表达式”的原则。因此这个值就要对应着一个解释内部的类型,那么我们要怎样生成这个值呢?一种策略是把它写进词法分析器,还有一种策略是用一些看起来不那么“直观”的方式,比如:
这当中的取舍完全取决于语言的设计者,也就是解释器的编写者。站在语言的使用者的对立面进行一定的思考,对于理解其他语言中的设计有好处。
标准的Scheme中“钦定”了以列表作为其基础的也是唯一的复合数据结构,比如的结果,是可以像普通的、用构建起来的列表一样,用和进行操作的。但我们完全可以创建新的数据结构,甚至用别的数据结构替换之作为基础数据结构。这是一个与语言提供的“编程模型”息息相关的特性。比如说,你可以提供一组内建函数,对可以随机读写的数组进行封装,那么恭喜你,你写的已经不是LISP了,而是一种新的,应当被成为ARRAP(array processor)的语言的解释器。再比如说,你完全可以用普通函数定义如下一套使用Church编码的列表:
到此,以上就是小编对于实现自举的编程语言有哪些的问题就介绍到这了,希望介绍关于实现自举的编程语言有哪些的3点解答对大家有用。