2

我是一个几乎完整的 OCaml 新手,但有一些函数式编程知识。我正在寻找一种在两种规范模式之间进行转换的概念方法。

1 2 “tau1”
1 3 “h1”
2 1 “h1”

进入

1 tau1:2,h1:3;
2 h1:1;

这些文件通常要大得多。我想我可以使用记录类型并逐行读取输入文件,然后写入另一个文件。但是有没有更好的方法?喜欢使用 Ocamlyacc 或类似的东西进行解析和转换?还是别的什么?

4

2 回答 2

5

这一切都取决于您当前和未来的需求。

如果您认为您将有机会重用这些知识,请学习解析工具。

另一方面,您需要解析的文件格式似乎很简单,因此如果格式不发展,手动编写专门的解析器来处理这种格式会更快。

于 2013-03-10T19:18:39.770 回答
0

您的数据看起来很简单,因此Scanf.fscanf可以解析一行。下面的代码读取一行并给出值的元组。

let ic = open_in "data.txt" in
  Scanf.fscanf "%d %d %s\n" (fun index value key -> (index, value, key))

格式规范类似于 C 的scanf. 如果要删除 in 中的双引号key,请替换"%s"into "\"%[0-9a-aZ-Z]\""

仍然存在内存不足的问题,但解决方案可能在您的脑海中。

于 2014-06-25T14:48:28.587 回答