問題タブ [ocamllex]

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 に答える
346 参照

ocaml - OCamlLex 大文字と小文字を区別しない

Ocamllex 仕様で大文字と小文字を区別しないトークンを使用する方法はありますか? 私はすでにこの方法で大文字と小文字を区別しないトークンを作成しようとしました:

しかし、存在する場合、私は何か他のものを探しています。

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

ocaml - Ocamllex refill-handler example

In Chapter 12 Lexer and parser generators, I fail to compile the following example :

I also do not understand how the module Make is working, and where it comes from. Note : I am currently using 4.02.1 ocaml compiler.

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

ocaml - corebuild による OCaml コンパイル

現在、次のファイルを含むプロジェクト (Python コンパイラに移動) があります。

依存関係は次のとおりです。

私が読んだドキュメントに従って動作するはずの次のことをコンパイルしようとします:

ast.ml には、私が持っている型宣言のリストが含まれています

ocamlfind、corebuild、ocamlopt のドキュメントを読むのに数時間を費やしましたが、何もありませんでした。ある時点で、単なる偶然のように思えてコンパイルされ、二度と機能しなくなりました。どんなツールを使っても構いません。

これがparser.mlyの内容です

そして、これがエラーメッセージで参照されている最後の行です。

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

compiler-errors - OCaml 警告 31、compiler-libs、および ppx

アプリケーションを OCaml 4.02.3 から 4.03.0 に移植しています。

に次のものがあるとしますlexer.ml

次のように実行しようとしています。

しかし、次のエラーが発生します。

compiler-libsモジュールも呼び出されていることを理解していますがLexer、それは私のレクサーと衝突します:

  • コンパイラ ライブラリをリンクしようとしているわけではありません。で使用されていることは理解していますがppx_sexp_conv、これはプリプロセッサであるため、コンパイラ ライブラリをアプリにリンクする必要はありません。

  • 警告 31 は単なる警告であり、回避策として明示的に無視しようとしています ( -w @a-4-31) が、うまくいきません。以前は 4.02.3 で動作していました。

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

ocaml - きれいなプリンターで空白を忠実に処理する

私は言語のフロントエンドを書いています ( by ocamllexand ocamlyacc)。

したがって、フロントエンドはAbstract Syntax Tree (AST)プログラムからビルドできます。次に、AST を受け取ってプログラムを出力する pretty printer をよく作成します。後で AST をコンパイルまたは分析するだけの場合、ほとんどの場合、印刷されたプログラムが、空白に関して元のプログラムとまったく同じである必要はありません。ただし、今回は、空白に関して元のプログラムとまったく同じプログラムを印刷するきれいなプリンターを作成したいと思います。

したがって、私の質問は、AST の種類をあまり変更しないようにしながら、空白を処理するためのベスト プラクティスは何かということです。AST の各型に (空白の) 数を追加したくありません。

たとえば、これは私が現在 で空白を処理する (つまり、スキップする) 方法ですlexer.mll

これとフロントエンドの他の部分を変更して、後で印刷するために空白を正しく考慮に入れる方法を知っている人はいますか?