D

88250 Java golang Linux 开源
关注
1 号成员,2012-11-24 16:19:56 加入
62.6k
个人主页 浏览
33.9k
帖子 + 回帖 + 评论
但行好事莫问前程
  • 88250 昆明
    链接

    昨晚写完了 Lute 的块级元素解析,并通过了测试用例 296。但是代码实现结构性太差,别人读起来肯定很困难,也不利于以后维护,今早决定推翻重写。

    之前是完全使用递归下降写的,生成 AST 时不需要遍历,最多只需要回退两行源文本。但这个实现方式在处理块级容器(列表、列表项、块引用)时异常艰难,所以决定还是按照 CommonMark 规范里面介绍的解析策略进行吧,每次读取新行后遍历已有树,在未关闭的节点上做判断操作。这样做虽然每次解析新行时都要遍历树,但是实现起来会容易很多,另外考虑到 Markdown 的 AST 不会出现太多层级,其实遍历树也不会太耗时间的。

    唉,不听老人言,吃亏在眼前啊 😂

  • 更多