問題タブ [camlp4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
80 参照

parsing - camp4: Ast.TySum を照合して Ast.TyOr を取得する方法

私はocamlp4が初めてです。私はそれを始めるためにJake Donham のブログを読んでいます。

次のような単純な型を取得する小さな CamlP4 プログラムを作成しようとしています。

t_of_stringと関数を生成しt_to_stringます。

ブログのコードに従って、タイプを次のように一致させることができるはずです。

しかし、これはうまくいきません。ASTを見campl4of xx.ml -printer oて、興味深い部分に減らします:

しかし、私は次のようなものと一致する必要があります

match ケースの AST に spurious があるようですがTySum、それを取り除くことができませんでした。

誰かがその解決策を持っていますか?

0 投票する
1 に答える
312 参照

ocaml - OCamlbuild と camlp4.macro

OCaml ソース ファイルのいくつかが IFDEF を使用しているプロジェクトがあります。このプロジェクトのすべての .ml ファイルを camlp4.macro で前処理する必要があることを OCamlbuild に伝える簡単な方法はありますか?

0 投票する
2 に答える
576 参照

ocaml - OCamlbuild と camlp4 のオプション

条件付きコンパイルを有効にするために camlp4.macro を使用しています。「use_jscore」でタグ付けされた特定のファイルを特定の camlp4 オプションで前処理する必要があることを OCamlbuild に通知する際に問題が発生しています。これが私が現在持っているものです:

しかし、これは OCamlbuild によって完全に回避されます。私は ocamlfind を使用しているので、基本的に OCamlbuild に伝えたいことは、「use_jscore」でタグ付けされたすべての OCaml ファイルは、-DUSE_JSCORE オプションも指定された camlp4.macro によって前処理する必要があるということです。

0 投票する
1 に答える
850 参照

ocaml - 戻り値sexpで型に注釈を付けると、バインドされていない値int_of_sexpが発生するのはなぜですか?

オンラインの多くの簡単な例で示されているように、sexplib 構文拡張を使用して、型のシリアル化コードを自動的に生成します。

でコンパイルに失敗しますError: Unbound value int_of_sexp

0 投票する
2 に答える
116 参照

ocaml - camlp4o が 2 項関数として解析 (または) できないのはなぜですか?

バニラの OCaml では、他のすべての(or)関数と同じように 2 項関数な(+)ので、次のようなコードは問題なく動作します。

ただし、camlp4o がロードされている環境では、次のように解析できません。

一方、(+)その他の整数算術演算子は、どちらの環境でも引き続き期待どおりに機能します。

どうしてこれなの?これは camlp4o の制限ですか、それともバグですか? これは OCaml 3.12.1 で発生します (OS X 10.7.4 では、GODI ブートストラップ経由で新しくインストールされます)。

0 投票する
1 に答える
107 参照

ocaml - camlp4にパッチを適用するためのベストプラクティスは?

パッチをコミットしてINRIAがマージされるのを待つのは時間がかかり、私の作業は常に遅れていました。そこで、camlp4のブランチを作成しましたが、少し変更を加えるたびに、コンパイラ全体を作成する必要があり、時間がかかります。あなたのベストプラクティスは何ですか?(ばかげたミスをしてすみません)

(camlp4の分岐は比較的安全だと思います。少なくとも、バイナリ互換性が保証されています)

0 投票する
1 に答える
478 参照

ocaml - ocamlbuildを使用してcamlp4にオプションを渡す

プロジェクトのビルドプロセスを簡素化するために、ocamlfindに対するocamlbuildのネイティブサポートを使用しています。ファイルfoo.mlは、camlp4のマクロを使用した条件付きコンパイルに依存しています。この_tagsファイルには次のものが含まれています。

これはうまく機能しますが、camlp4にオプションを渡すのに問題があります。ocamlbuild + ocamlfind自動化を使用しない場合、コマンドラインは次のようになります。

しかし、-DFOOocamlbuild + ocamlfindを使用するときにcamlp4に変数を渡すにはどうすればよいですか?をいじる代わりに、単純なコマンドラインオプションがあるべきだと思いますmyocamlbuild.ml

0 投票する
2 に答える
431 参照

ocaml - Camlp4の例:バインドされていないモジュールPrinters.Ocaml

この便利な一連のブログ投稿に従ってCamlp4を探索していますが、コンパイルの問題が発生しています。これは私のtest.mlファイルのコードです:

私はこのコンパイルコマンドを使用しています:ocamlc -pp camlp4of -I + camlp4 -o Variant camlp4lib.cma test.mlしかし、ocamlcは次を発行します:エラー:バインドされていないモジュールPrinters.Ocaml

コンパイルコマンドの問題だと思いますが、Printers.Ocamlが実装されている場所がわかりません。

ご協力ありがとうございました!_神父

0 投票する
1 に答える
128 参照

ocaml - camlp4で文法規則を定義するときの_loc変数の目的は何ですか?

_loc変数は、関数に渡される引数として、式の文法規則のここに表示れます。match ... withmk_sequence

ただし、mksequence関数本体では使用されません。

この_loc変数は、文法規則の他の 場所にも表示されます。

camlp4コード生成チュートリアルでは、それは_loc場所を表すと書かれています。でも、その説明がよくわかりません。_loc誰かが未使用の変数を渡す目的を私に説明できますか?