Clojure中的句法分析
我知道edn/read字符串 在Haskell中,我倾向于使用Parsec 我需要解析一种类似Algo/Pascal的编程语言。建议在Clojure中使用哪些库进行解析Clojure中的句法分析,clojure,Clojure,我知道edn/read字符串 在Haskell中,我倾向于使用Parsec 我需要解析一种类似Algo/Pascal的编程语言。建议在Clojure中使用哪些库进行解析 编辑:4。如果有一种方法可以通过类似core.logic的方式来实现这一点,那么就有了额外的好处,在这种方式中,一个优先的conde将指定解决歧义的选项和顺序。您应该仔细看看。它是我使用过的最好的前端解析库之一。这是一个充满活力的项目,进展稳定。你在谷歌上搜索过Clojure parser combinator库吗?@Piotr
编辑:4。如果有一种方法可以通过类似core.logic的方式来实现这一点,那么就有了额外的好处,在这种方式中,一个优先的conde将指定解决歧义的选项和顺序。您应该仔细看看。它是我使用过的最好的前端解析库之一。这是一个充满活力的项目,进展稳定。你在谷歌上搜索过Clojure parser combinator库吗?@PiotrekBzdyl:是的,有instaparse、parsatron、kern和许多博客文章,但没有明显的赢家。我同意,我在instaparse上运气很好。在可用的两种格式中,我更喜欢ABNF。在实践中,如果它是模糊的,那么让我们得到所有可能的派生似乎有点不切实际,因为它可能导致指数blowup@eavdb当你清理语法中的规则时,它将完善这一点。“最近表现得很好,”弗兰克说。如果我错了,请纠正我-我做编译器已经很久了。CFGs中的歧义可以通过单独查看语法(无需任何输入)来检测。如果是这样的话,很天真,库似乎应该检测到歧义并通知用户修复它,而不是等到运行时再生成所有可能的解析。我确信instaparse在做出设计决策时有它自己的正当理由,我只是不确定它是否符合我的目标。@eavdb-instaparse仅在您请求时提供全部可能性,否则您将得到一个解决方案。我的建议是用一个合理的、具有代表性的语法和数据提要来尝试它。我不得不花更多的时间在猫头鹰衍生品之类的东西上,而不是那些没有表现力和松散性的东西。