Clojure China

用 Parser Combinator 解析缩进

#1

挺久之前写的一篇文章 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"]
]

不知道对人有没有用. 不过解析了缩进感觉还是挺有成就感的.
另外报错了调试工具没有完善, 有机会的时候还是要想想怎么对付.