Ocaml - 字符串到 (int*int*int) 列表
ocaml 函数中是否可以将这样的字符串“[(1,2,3);(1,2,5);(2,3,4)]”解析为 (int*int*int) 列表?或者我必须编写自己的解析函数吗?
谢谢格雷格
Is in ocaml function which can parse string like this "[(1,2,3);(1,2,5);(2,3,4)]" into (int*int*int) list ? or do I have to write my own parsing function ?
Thanks
Greg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,在 Scanf 模块——您将能够轻松扫描三元组,然后只需要添加一些逻辑来解析列表。
或者,您可以查看派生:
Well, it should not be too difficult with help of the Scanf module from the standard library -- you will be able to scan the triples easily and then only have to add a bit of logic to parse a list.
Alternatively you can take a look at deriving:
如果您愿意使用稍微不同的格式,您可以免费获得解析器。使用 sexplib 语法扩展,您可以简单地编写:
这将自动为您定义两个函数,
sexp_of_t
和t_of_sexp
。 Sexlib还提供了多种解析函数。然而,s 表达式的具体语法是不同的。您的示例将呈现:
If you're willing to use a somewhat different format, you can have your parser for free. Using the sexplib syntax extension, you can simply write:
and this will automatically define for you two functions,
sexp_of_t
andt_of_sexp
. Sexplib also provides multiple parsing functions.The concrete syntax of s-expressions, however, is different. Your example would be rendered: