这个开源项目牛逼:牙医教你用450行Go代码写出一个编程语言
2022-2-23 18:12:0 Author: mp.weixin.qq.com(查看原文) 阅读量:12 收藏

阅读本文大概需要 2 分钟。

大家好,我是 polarisxu。

没有系统学习过编译原理的同学可能会很好奇编程语言的编译器,Lexer & Parser,虚拟机是怎么实现的,同时又苦于系统性的教材过于枯燥。如果你之前用的动态语言,可能也不会想到这个层面,但用了 Go 后,想深入 Go 源码,可能会有相关想法:如何更好地掌握 Go?Go 编译器到底是怎么实现的?

其实,在Github上有一个项目,教你用 450 行的 Go代 码实现一个简单的编程语言,它的语法是这样的:

$a = "pen pineapple apple pen."
print($a)

看上去很简单是不是?但是它包含了一个手写的递归下降解析器和一个简单的解释器。

这门语言的名字为 Pineapple Lang,虽然该语言甚至不是图灵完备的。但写这个语言和教程的主要目的是让编译原理初学者有一个预热,简单了解一个编程语言是怎么构建的。

运行起来也是十分简单的:

$cd examples/pineapple/
$go build
$ ./pineapple hello-world.pineapple
pen pineapple apple pen.

你可以直接看用 Markdown 编写的原始版本:

通过Pineapple Lang还衍生出许多Pineapple Lang的编程语言版本,诸如Python、Typescript、Dart、Java、Ruby等:

Typescript版本是将代码转成JavaScript的AST,然后使用javascript的解释器canjs执行代码。

简而言之,如果你想了解编译器是怎么回事,可以通过这个项目入门哦。最后附上项目地址:https://github.com/karminski/write-a-programming-language-in-450-lines

解释说明一下,这个项目的作者是国人,昵称叫「牙医」,并非真的是牙科医生哈,别误解了~


往期推荐

我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。

坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流:gopherstudio


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247489596&idx=1&sn=a45b7548ade2ed67fba74154c3de0df4&chksm=9be337ddac94becb3525e92ec91b83ae7b5a908a678d4a6c6fd45bdd97c53cb6e974d6dca218#rd
如有侵权请联系:admin#unsafe.sh