和31core一起实现编程语言 — Day0: 一点点杂谈

最近开一个坑, 用Rust实现一个编程语言.

自己动手从零开始实现一个编程语言并非难事, 通过这个系列的文章让我们一起实现一个最简单的编程语言.

笔者曾经用Rust实现了一个编程语言(或者说还有大部分的功能还正在开发, 不过也无大碍, 项目的开发会赶上进度的)—Anicat, 我们将以这个项目为例子学习编程语言的工作原理.

为什么选用Rust?

其实笔者曾经用C语言写过一个demo, 但C语言的开发效率太慢了, 跨平台的时候会遇到一点点问题. Rust是一个C语言的替代品, 所有C语言能办到的事Rust都能办到.

Aincat是和Python一样解释执行的吗?

大概就是这个意思吧, 基于虚拟机的语言实现的时候不用去考虑特定平台的问题, 所有的指令集都按照自己的想法来实现. 不过Anicat的虚拟机更加底层, 它不会实现GC, 内存管理在编程期实现. 还有另外一个原因, Rust已经是一个十分优秀的语言了, 我们自制的语言能编译成原生代码不就抢了Rust的饭碗了(笑). 不过今后有能力的话可以试着生成llvm代码.

有没有什么非常困难的地方?

整个项目最难的地方莫过于汇编部分了, 寄存器分配、内存管理、编译优化都不是容易的事情, 但我们从最简单的部分入手, 把编译器部分放到最后来讲.

项目在: https://github.com/31core/anicat-rs可以找到, 如果打不开可以用这个https://codeberg.org/31core/anicat-rs
posted @ 2023-02-26 00:54  31core  阅读(11)  评论(0)    收藏  举报