作为彻底的缩进党, 我对于 Clojure 的括号语法很不以为然… 反正就是各种歪脑筋
经过折腾以后, 终于找到办法, 就是把我的 Cirru 语法通过 Macro 生成 Clojure
Parser 的代码是早先完成的 Cirru Parser in Clojure:
具体生成代码的代码看这个仓库, 是很简单的 Macro 转换:
另外写了一个 watch plugin, 用来自动编译代码:
最终的效果可以看这个文件当中的例子, 我已经能用来写东西了:
https://github.com/Cirru/minifier.clj/blob/master/cirru-src/cirru/minifier/parse.cirru
其中字符串语法 |a
或者 "|a blank b"
确实比较奇葩, 属于 Cirru 影响的
两个分别编译是 “a” 以及 “a blank b”, 引号是针对空格出现的
而 |
完全是因为 Clojure 把其他的键盘按键都用掉了, 只剩下这个按键…
目前我使用的语法并不完善, 只覆盖了简单常用的语法
其他的语法按照 symbol 类型能自动转化的应该还好,
特殊的语法, 比如 `
和 ~@
之类的, 不能用缩进表示, 目前完全没招
看看有没有看感兴趣?