基于ANTLR的Swift到JavaScript编译器
基于 ANTLR 的 Swift 到 JavaScript 编译器挺有意思的,尤其对搞前端又想折腾语言层的朋友来说,算是个不错的上手机会。项目用的是ANTLR,这个老牌工具真挺香的,能把你写的语法规则文件一键搞出词法和语法器,响应也快,调试也方便。
ANTLR 的.g4
文件就是整个编译器的心脏,定义好 Swift 的语法结构,它就能自动帮你生成 Java 代码,把 Swift 源代码转成AST。之后你就可以在 AST 基础上做转换逻辑,比如把let
变量转成const
,把闭包转成 JS 匿名函数等等。
整个编译过程你可以在 IntelliJ IDEA 里跑起来,装上ANTLR 插件之后,写语法文件都有语法高亮和图形化调试。IDEA 调 ANTLR 真的舒服,出错位置一目了然。
项目结构也比较清晰:Swift.g4
是语法核心,ANTLR 自动生成的 Java 代码放一边,核心转换逻辑另起一套模块,加上一些测试用的 Swift 文件,一起走通流程。构建的话用Gradle,命令行跑也没问题。
如果你平时用 Swift 写得多,又想了解编译器怎么一层层把代码变成别的语言,这个项目真挺合适的。哪怕不写 Swift,单纯想搞搞语言转换、熟悉编译原理和 ANTLR,也值得一看。
要是你想更深入了解语法这块,还可以看看这些文章:
如果你用惯了 JS 环境,突然有一天想跑点 Swift 代码,或者研究语言层的跨平台玩法,可以去翻翻这个项目:swift-js-transpiler-master
,还挺有意思的。
1.5MB
文件大小:
评论区