1

私は現在、OCaml プログラム (かなり標準的/制限された文法を使用) を Racket に変換しようとしており、camlp4 を使用して中間表現への解析を行う方法があるかどうかを確認しようとしています。私は ocamlyacc と ocamllex を使用してレクサーとパーサーを構築しようとしましたが、文法がどれほど大きくなる可能性があるかを考えると、かなり複雑になりました。それで、私は周りを検索し、camlp4 にはこの機能の一部が既に組み込まれていることを発見しましたが、それを使用して一部の OCaml コードの AST を取得する方法を調べることができないようです。ドキュメント/例/アイデアはありますか? また、これをより良く行う方法について何か提案があれば、それも素晴らしいことです! ありがとう。

4

1 に答える 1

4

コンパイラと共に配布されている compiler-libs を使用するだけです。そのようにして、ocaml パーサー自体を直接使用できます。

.ml ファイルを読み取るコードの例を次に示します。パーサーのドキュメントはかなりまともです。解析後、Parsettreeを取得します。

于 2016-10-10T19:48:03.950 に答える