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
进行词法分析。都有很好的文档。
您还可以使用 camlp4 或 camlp5 流解析功能。
另请阅读 lexing 和 parsing 上的***页面。
【讨论】:
【参考方案2】:我倾向于使用Aurochs,这是一个用于此类事情的 PEG 解析器。那里的仓库中有示例代码。
【讨论】:
【参考方案3】:如果您想指定语法并让 ocaml 为您生成词法分析器和解析器,请查看这些 ocamllex 和 ocamlyacc 教程。我建议这样做。如果您的文件格式中确实只有一种类型的标记,那么如果您可以使用词法分析器将文件拆分为语法认为有效的标记,那么 ocamlyacc 可能会过大。
【讨论】:
以上是关于Ocaml - 文件和解析的主要内容,如果未能解决你的问题,请参考以下文章
emacs ocaml REPL:“搜索程序:没有这样的文件或目录,ocaml”