Ocaml - 文件和解析

Posted

技术标签:

【中文标题】Ocaml - 文件和解析【英文标题】:Ocaml - Files and parsing 【发布时间】:2012-01-20 22:11:52 【问题描述】:

如何在 ocaml 中从文件中读取内容?具体如何解析?

例子:

假设文件包含(a,b,c);(b,c,d)| (a,b,c,d);(b,c,d,e)|

那么在阅读完这篇文章后,我想要两个包含l1 = [(a,b,c);(b,c,d)]l2 = [(a,b,c,d);(b,c,d,e)] 的列表

有什么好的解析教程吗?

【问题讨论】:

请不要转发问题。如果您有任何新内容要添加到现有问题中,请改为编辑。 【参考方案1】:

这是menhir 解析器生成器(ocamlyacc 的继承者)的一个很好的用例。您可能想使用ocamllex 进行词法分析。都有很好的文档。

您还可以使用 camlp4camlp5 流解析功能。

另请阅读 lexing 和 parsing 上的***页面。

【讨论】:

【参考方案2】:

我倾向于使用Aurochs,这是一个用于此类事情的 PEG 解析器。那里的仓库中有示例代码。

【讨论】:

【参考方案3】:

如果您想指定语法并让 ocaml 为您生成词法分析器和解析器,请查看这些 ocamllex 和 ocamlyacc 教程。我建议这样做。如果您的文件格式中确实只有一种类型的标记,那么如果您可以使用词法分析器将文件拆分为语法认为有效的标记,那么 ocamlyacc 可能会过大。

【讨论】:

以上是关于Ocaml - 文件和解析的主要内容,如果未能解决你的问题,请参考以下文章

如何在OCaml中编译多个文件?

emacs ocaml REPL:“搜索程序:没有这样的文件或目录,ocaml”

编译包含“打开 Findlib”的 Ocaml 文件时出现未绑定模块 Findlib 错误

Ocaml - 字符串到 (int*int*int) 列表

OCaml makefile依赖问题

如何在 utop 中重新加载 OCaml 模块