挺久之前写的一篇文章 https://segmentfault.com/a/1190000003796898
当时做了两次尝试, 一次是写一个通用的 parser combinator 库, 功能很粗糙:
上边的库没有对缩进做完整处理, 但是能 parse 一些简单的文法比如 JSON, HTML 语法,
然后还做了一个专门针对缩进的版本, 因为 Cirru 语法是基于缩进设计的,
年初时候我把其中的 bug 修好了, 所以多层的缩进也能正常解析了,
比如能解析这样的缩进语法
let
a 1
b 2
+ a b
结果是:
["let"
[["a" "1"] ["b" "2"]]
["+" "a" "b"]
]
不知道对人有没有用. 不过解析了缩进感觉还是挺有成就感的.
另外报错了调试工具没有完善, 有机会的时候还是要想想怎么对付.