問題タブ [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.
ocaml - Camlp4 を使用して、普遍的および存在量指定子の文字列を解析します
Camlp4 を使用して、量化キーワードと変数がコンマで区切られた量指定子の文字列を解析しています。一例を以下に示します。
ここで、exists
とforall
はキーワードでx,y,z,a,b,h,k
あり、識別子です。対応するトークンはEXISTS
、FORALL
およびIDENTIFIER of string
です。
私のデータ構造:
上記の量指定子の文字列を解析するための私のルールは次のとおりです。
ただし、私のパーサーは常にエラーをスローします。
この問題を解決する方法を知っていますか? キーワードLIST1
の後に要素が検出されたときにエラーのスローを停止するにはどうすればよいですか?`COMMA
どうもありがとうございました!
(詳細については、空白を使用して、のような同じ量化キーワードの影響を受ける変数を区切ると、ルール内のexists x y z, forall a b, exists h k
を削除すると、パーサーはこの新しい文字列を完全に解析できます)。SEP `COMMA
one_kind_quantifiers
===========================
ソリューションの更新:
Igor (@ygrek) からの提案により、LIST1 を使用せずに手動で文字列のリストを解析するルールを作成することで、予想されるパーサーを作成することができました。
文字列のリストを解析するルールは次のとおりです。
だがしかし:
ルールを記述する2 番目の方法ではid_list
、 を使用した場合と同じエラーがスローされますLIST1
。(だから私は多分それLIST1
が実装されている方法だと思います...)
preprocessor - ocamlbuild と camlp5 でコンパイルする
通常の Makefile の使用を避けるために、私が取り組んでいるプロジェクトを ocamlbuild でコンパイルしようとしていますが、これは少し複雑です。
具体的には、最初にコンパイルする必要がある構文拡張ファイル (extend.ml) があります。通常の Makefile には次のルールがあります。
次に、依存関係を計算するために、次のようなルールがあります。
もちろん、オブジェクト ファイルの作成には、上記と同様のルールが必要です。
私の質問は、これらのルール/要件を1 つの ocamlbuild コマンドに統合するにはどうすればよいですか (可能な場合) ?
最初にextend.mlファイルをコンパイルしてから、次のコマンドを使用しようとしました:
しかし、私はそれが決して最適だとは思いません。
残念ながら、私は ocamlbuild をコンパイル ツールとして使用することに慣れていないので、助けていただければ幸いです。
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 は、エラーのある行を含むファイルです。
ocaml - Camlp4 を使ってコンパイルするには?
Camlp4 で引用をテストしています。私の tester.ml プログラムは次のとおりです。
これをさまざまな方法でコンパイルしようとしました。
ただし、生成された実行可能ファイルは、期待どおりに「完了」を出力しません。このファイルをどのようにコンパイルすればよいですか?
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 ファイルから適切に呼び出されるように生成する必要があります。./T
hello
js_of_ocaml T -o cubes.js
cubes.js
jsOneArgument
cubes.js
パッケージを台無しにする前に、が./T
返されたので、 、などをUnimplemented Javascript primitive caml_pure_js_expr!
インストールしました...npm
node