問題タブ [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 投票する
1 に答える
81 参照

ocaml - Camlp4 を使用して、普遍的および存在量指定子の文字列を解析します

Camlp4 を使用して、量化キーワードと変数がコンマで区切られた量指定子の文字列を解析しています。一例を以下に示します。

ここで、existsforallはキーワードでx,y,z,a,b,h,kあり、識別子です。対応するトークンはEXISTSFORALLおよびIDENTIFIER of stringです。

私のデータ構造:

上記の量指定子の文字列を解析するための私のルールは次のとおりです。

ただし、私のパーサーは常にエラーをスローします。

この問題を解決する方法を知っていますか? キーワードLIST1の後に​​要素が検出されたときにエラーのスローを停止するにはどうすればよいですか?`COMMA

どうもありがとうございました!

(詳細については、空白を使用して、のような同じ量化キーワードの影響を受ける変数を区切ると、ルール内のexists x y z, forall a b, exists h kを削除すると、パーサーはこの新しい文字列を完全に解析できます)。SEP `COMMAone_kind_quantifiers

===========================

ソリューションの更新:

Igor (@ygrek) からの提案により、LIST1 を使用せずに手動で文字列のリストを解析するルールを作成することで、予想されるパーサーを作成することができました。

文字列のリストを解析するルールは次のとおりです。

だがしかし:

ルールを記述する2 番目の方法ではid_list、 を使用した場合と同じエラーがスローされますLIST1。(だから私は多分それLIST1が実装されている方法だと思います...)

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

preprocessor - ocamlbuild と camlp5 でコンパイルする

通常の Makefile の使用を避けるために、私が取り組んでいるプロジェクトを ocamlbuild でコンパイルしようとしていますが、これは少し複雑です。

具体的には、最初にコンパイルする必要がある構文拡張ファイル (extend.ml) があります。通常の Makefile には次のルールがあります。

次に、依存関係を計算するために、次のようなルールがあります。

もちろん、オブジェクト ファイルの作成には、上記と同様のルールが必要です。


私の質問は、これらのルール/要件を1 つの ocamlbuild コマンドに統合するにはどうすればよいですか (可能な場合) ?

最初にextend.mlファイルをコンパイルしてから、次のコマンドを使用しようとしました:

しかし、私はそれが決して最適だとは思いません。

残念ながら、私は ocamlbuild をコンパイル ツールとして使用することに慣れていないので、助けていただければ幸いです。

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

ocaml - バインドされていないモジュール Camlp4

このサイトで同様の質問があることは知っていますが、どれも私の問題を解決するのに役立ちませんでした.

私はOCamlの初心者で、Camlp4の使用に関する次のチュートリアルを使用しています https://github.com/ocaml/camlp4/wiki/OCaml_code_generation_tutorial

ただし、最初の行で open Camlp4.PreCast 「Unbound module Camlp4」というエラーが表示されます。

OCaml をダウンロードした場所に camlp4.exe ファイルがあるので、インストールされていると想定しました。Windows 8とXubuntuの両方でこれを試しました

これは、ファイルをコンパイルするためにコマンド ラインに渡す入力です。 ocamlc -o test.exe test.ml ここで、test.ml は、エラーのある行を含むファイルです。

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

ocaml - Camlp4 を使ってコンパイルするには?

Camlp4 で引用をテストしています。私の tester.ml プログラムは次のとおりです。

これをさまざまな方法でコンパイルしようとしました。

ただし、生成された実行可能ファイルは、期待どおりに「完了」を出力しません。このファイルをどのようにコンパイルすればよいですか?

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

ocaml - ocaml、camlp4、ppx、node、js_of_ocaml、ocamlbuild に互換性を持たせる

とをインストールnpmした後node、OCaml ファイルをコンパイルするとjs_of_ocamlエラーが発生したため、次のようにしましたopam switch reinstall system

ocamlfindその後、もう機能しないことに気付きました:

PS:node --version与えるv6.1.0; npm --version与える3.8.6; ocaml -versionを与えThe OCaml toplevel, version 4.03.0ます。 js_of_ocaml --versionでしたが2.7、落札後、opam swtich reinstall systemお譲り致し-bash: /Users/softtimur/.opam/system/bin/js_of_ocaml: No such file or directoryます。

これらすべてのパッケージに互換性を持たせるために何をすべきか知っている人はいますか?


以前:npmとをインストールした後node、実行する前のコンパイル エラーは次のopam switch reinstall systemとおりです。

別の方法でもエラーが発生しました:


最初に: 私の最初の目標は、次のように記述してコンパイルするcubes.mlことです。1) Web で呼び出すことができる JS 関数を作成するために OCaml 関数をラップします。2) OCaml 関数とバイトコードは、Linux のコマンドラインでテストできます。

cubes.ml以下のとおりであります:

次に、を返すocamlfind ocamlc -package js_of_ocaml.ppx -linkpkg cubes.ml -o T必要があるものを生成するT必要があります。また、 の関数が他の JS または HTML ファイルから適切に呼び出されるように生成する必要があります。./Thellojs_of_ocaml T -o cubes.jscubes.jsjsOneArgumentcubes.js

パッケージを台無しにする前に、が./T返されたので、 、などをUnimplemented Javascript primitive caml_pure_js_expr!インストールしました...npmnode