搞一门编译到JS语言
Link Share :https://onetwo.ren/%E6%90%9E%E4%B8%80%E9%97%A8%E7%BC%96%E8%AF%91%E5%88%B0JS%E8%AF%AD%E8%A8%80/
- via RSS
本文主要讲述如何使用 Antlr4、如何自底向上用 babel 构建 javascript AST 。
COOL-language
COOL 语言是一门并没有广泛用于课堂教学的面向对象语言,全称是 ClassroomObjectOrientedLanguage,遗憾的是它不能进行物联网、VR、游戏和移动端 GUI 编程。幸运的是,熟练的情况下我们可以在三天内将它编译成 javascript,让它就像萝莉穿上魔法少女魔装一样,获得强大的能力(误)。
COOL 语言的代码长这样:
class Main inherits IO { jiayimiao(second: Int): Int { second + 1 }; main(): SELF_TYPE { { out_string((new Object).type_name().substr(4,1)). out_string((isvoid self).type_name().substr(1,3)); out_string("\n"); } }; };
可以看到类型标注和 flowtype、 typescript 是一个路数,花括号和分号也很 C-style。COOL 和 JS 最大的不同是,COOL 是面向表达式(expression)的语言,jiayimiao() 函数直接返回了 second + 1 的结果,main() 函数直接返回了最后一行 out_string() 的结果,而 javascript 是基于语句(statement)的,转出来大概是这样:
class Main extends IO { jiayimiao(second: number): number { return this.second + 1; } main(): void { return function codeBlock() { this.out_string(new Object().type_name().substr(4, 1)).out_string((!!this).type_name().substr(1, 3)); return this.out_string('\n'); }.bind(this)(); } } new Main().main();
expression 和...
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: