我看过一些源代码
let rec parse_document = parser
| [< len = parse_int32; st; >] ->
parse_list [] (ES.take_int32 len st)
| [< >] -> malformed "parse_document"
我能知道[< >]
里面是什么吗?谷歌搜索这种迹象太难了。
我看过一些源代码
let rec parse_document = parser
| [< len = parse_int32; st; >] ->
parse_list [] (ES.take_int32 len st)
| [< >] -> malformed "parse_document"
我能知道[< >]
里面是什么吗?谷歌搜索这种迹象太难了。
这是Stream数据类型的语法糖。它的操作在使用 OCaml 开发应用程序一书的这一章中有详细描述。
语法糖不是编译器内置的,需要经过Camlp4预处理器的预处理。为此,您必须添加-pp camlp4o
到编译命令行。
这是一个流。它主要用于创建解析器。但是流已从 OCaml 中删除,现在作为camlp4 扩展提供。
它是Stream 解析语法扩展的一部分,表示空流。
这就是流的字面语法。流就像一个列表,只是一次只有一个元素可用,并且您通过读取它来删除第一个元素。
它似乎主要用于解析器代码。解析器——parser
在你的例子中用关键字声明——是可以“使用”流元素的函数。