我憋了几年的事情终于做到了, 有点小激动, 先梳理下好了
不过 V2EX 上应该有不少大牛潜水... 先写个缩水的介绍:
我定义了一套基于缩进的语法, 实现了解释器跟代码格式化工具, 项目名字叫 Cirru
以及用 Cirru 语法生成 HTML, JSON 等等, 最近终于生成了能写个人项目的 JavaScript
今天进行了重构, 后端换成了 Mozilla Parser AST, 引入了 Babel, 提高生成代码的质量
编译细节我缺乏经验没有深入, 而 Babel 会对 ES6 AST 做优化, 所以比手写更加可靠
语法上模仿 Lisp, 但是强烈要求干掉跨行的括号来保证清晰, 还有严格使用缩进
大致观感是这样的(后面语法有更新, 也差不多), 这是 Gulp 你懂的
夸张一点的代码还可以看这里, 在写 React 模块:
https://github.com/Cirru/cirru-editor/blob/master/src/components/token.cirru#L26
如果有大神觉得还可以, 给点项目前进方向的建议吧
要是只是感兴趣想看看代码或者了解一下具体的想法, 也可以看下方的链接
CirruScript 的编译过程可以被成下面几个步骤:
Cirru 代码 -> Cirru AST -> ES6 AST -> ES5 JavaScript
三个箭头对应的项目分别是 Cirru Parser, Scirpus, 还有社区最近热门的 Babel
查看 Cirru Parser 解析语法 http://repo.cirru.org/parser/
查看 Scirpus 生成的 ES6 AST http://repo.cirru.org/scirpus/
查看 Babel 生成的 JavaScript http://repo.cirru.org/script/
查看完整项目 https://github.com/Cirru/cirru-script
查看 Cirru 相关项目 http://cirru.org
CirruScript 目前只是实现了 ES6 的子集, 后边打算根据个人需要添加一些功能
另外我也搜集过 LLVM 作为编译后端的资料, 目前技能点不够只好往后拖了 >_<
但是但是终于别人设计的编程语言用了四年终于用上自己设计的语言了!
虽然只是语法层面引入好看点的波兰表达式而已, 好吧我的要求不高
如果有其他好玩的想法也可以到微博私信聊啊 http://weibo.com/jiyinyiyong
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/181804
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.