- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Crystal 编程语言很感兴趣,但我有点困惑:编译器是用 Crystal 编写的。
我知道你可以引导一种语言(自己编写),但你仍然需要另一种语言的一些代码,这样你才能运行编译器/解释器。我还在 Crystal repository 上搜索了一些不是 Crystal 源代码的代码, 但我只找到了 llvm-ext.cc文件,它似乎无法处理整个语言。
那么,我的问题是:Crystal 是否只是一种语言规范,它是否要求您拥有其他(非官方)编译器?
最佳答案
除了 Crystal 文档推荐的编译器之外,不需要其他编译器,它是 Crystal 前端到 LLVM 的编译二进制文件和 LLVM 的二进制文件,以便从 Crystal 源代码(包括 Crystal 前端)编译程序。 Crystal 不仅是一种语言规范;它是一种运行的编译语言,具有自托管前端。
为 Crystal 或任何编译语言编写一个新的编译器前端,以便通过不同的方法提供语言,这是可能的,但很困难而且不一定实用。困难且通常不切实际的证据是,许多语言只有一种当前实现,而具有多种实现的流行语言通常每个编译器套件最多只有一个前端。
要“从无到有”提供一种语言而不是依赖现有的编译器或解释器,可以通过在表中查找机器代码指令并将它们逐字节输入计算机的方法来编写编译器。这是一种极其困难的编程方法,我的个人经验证明了这一点,我用这种方法编写了大约 10 个字节长的程序,但这些程序并没有做太多事情。我用其他方法编写了更长的程序,对程序的功能有更多选择,而且没有那么多困难。
自 2013 年 11 月起一直持续到 2017 年,Crystal 的实现只有一个自托管编译器前端。在此之前,Crystal 是由用 Ruby 编写的前端实现的。 Ruby前端用Crystal重写,然后用Ruby前端从Crystal源码编译前端。这就是导致 Crystal 拥有自托管前端的引导过程。
引用资料:
Crystal site: DOCS: Installation: From source
Good bye Ruby Thursday — Crystal 启动公告
关于白手起家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37677002/
我对 Crystal 编程语言很感兴趣,但我有点困惑: 编译器是用 Crystal 编写的。 我知道你可以引导一种语言(自己编写),但你仍然需要另一种语言的一些代码,这样你才能运行编译器/解释器。我还
我是一名优秀的程序员,十分优秀!