5

如何从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)]

有什么好的解析教程吗?

4

3 回答 3

5

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

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

另请阅读有关lexing & parsing的维基百科页面。

于 2011-12-15T07:12:27.597 回答
3

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

于 2011-12-15T23:53:55.790 回答
2

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

于 2011-12-16T15:44:38.630 回答