|
|
2
6
ANTLR parser generator here . 不管怎样,这里有一些源代码可以看。 |
|
3
4
另一个尚未提及的是 clarsec 我最近也在进行一个非常类似的任务,在Clojure中构建一个解析器。我沿着fnparse的路径走了很长一段路,特别是使用了(尚未发布的)fnparse 3,您可以在 develop github上的分支。它分为两种形式:hound(专门用于LL(1)个单独的lookahead解析器)和cat,后者是packrat解析器。两者都是基于monad(比如clarsec)构建的函数解析器。fnparse做了一些令人印象深刻的工作——记录解析器、构建错误消息等的能力非常出色。关于develope分支的文档是不存在的,尽管除了函数docstring之外,它实际上相当不错。最后,我遇到了一些障碍,试图使LL(k)工作。我认为这是可能的,只是很难没有一个像样的例子,如何使回溯工作良好。我也非常熟悉分词和分词的解析器,所以我很难这样想。我仍然对这是一个很好的解决方案在未来非常感兴趣。 Antlr ,这是非常健壮的,有很好的旅行,有很好的文档(在2本书中),等等。它没有Clojure后端,但我希望它在将来会,这将使它非常适合解析器的工作。我正在使用它来进行词法分析、解析、树转换,以及通过StringTemplate进行模板化。它并不是完全无障碍的,但到目前为止,我已经找到了所有问题的可行解决方案。Antlr独特的LL(*)解析算法允许您编写真正可读的语法,但仍然使它们相当有效(如果不可读,则逐渐调整)。 |
|
|
4
2
两个功能性标记转换器是:;
|
|
|
David542 · 任何语言都允许函数名中有空格吗? 1 年前 |
|
Andy · 将LENGTH OF移动到COMP字段解析失败 2 年前 |
|
|
Chris Geo · 如何找到LR0项目的FOLLOW集合? 2 年前 |
|
|
Yash Singhal · 在reactjs中解析Pdf中的文本 2 年前 |
|
|
i33SoDA · 如何将逗号分隔的数字字符串解析为int数组? 2 年前 |