Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure中的句法分析_Clojure - Fatal编程技术网

Clojure中的句法分析

Clojure中的句法分析,clojure,Clojure,我知道edn/read字符串 在Haskell中,我倾向于使用Parsec 我需要解析一种类似Algo/Pascal的编程语言。建议在Clojure中使用哪些库进行解析 编辑:4。如果有一种方法可以通过类似core.logic的方式来实现这一点,那么就有了额外的好处,在这种方式中,一个优先的conde将指定解决歧义的选项和顺序。您应该仔细看看。它是我使用过的最好的前端解析库之一。这是一个充满活力的项目,进展稳定。你在谷歌上搜索过Clojure parser combinator库吗?@Piotr

我知道edn/read字符串

在Haskell中,我倾向于使用Parsec

我需要解析一种类似Algo/Pascal的编程语言。建议在Clojure中使用哪些库进行解析


编辑:4。如果有一种方法可以通过类似core.logic的方式来实现这一点,那么就有了额外的好处,在这种方式中,一个优先的conde将指定解决歧义的选项和顺序。

您应该仔细看看。它是我使用过的最好的前端解析库之一。这是一个充满活力的项目,进展稳定。

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