9

私はいくつかのソースコードを見てきました

let rec parse_document = parser
    | [< len = parse_int32; st; >] ->
      parse_list [] (ES.take_int32 len st)
    | [< >] -> malformed "parse_document"

[< >]中身はわかりますか?この種の兆候についてグーグルで検索するのは難しすぎます。

4

4 に答える 4

7

これはStreamデータ型のシンタックス シュガーです。その操作については、『 Developing Applications with OCaml』という本のこの章で詳しく説明されています。

シンタックス シュガーはコンパイラに組み込まれておらず、Camlp4 プリプロセッサで前処理する必要があります。-pp camlp4oこれを行うには、コンパイル コマンド ラインに追加する必要があります。

于 2013-04-22T15:05:25.050 に答える
2

これはストリームです。主にパーサーを作成するために使用されます。しかし、ストリームは OCaml から削除され、現在は camlp4 拡張機能として提供されています。

于 2013-04-22T15:03:53.367 に答える
2

これはStream 解析構文拡張の一部であり、空のストリームを意味します。

于 2013-04-22T15:04:01.267 に答える
1

これがストリームのリテラル構文です。ストリームは、一度に 1 つの要素しか使用できず、最初の要素を読み取って削除することを除いて、リストと同じです。

主にパーサーコードに使用されているようです。parserあなたの例のようにキーワードで宣言されたパーサーは、ストリームの要素を「消費」できる関数です。

于 2013-04-22T15:03:02.463 に答える