2

ドメイン固有言語(ロジック)menhir用の ベースのパーサーを含むコードがあります。デバッグ中の私の正気のために、次のようにトップレベルでこの言語 (数式) のインスタンスを直接入力できると便利です。

# f = << P(x,y) & x!=y >>

campl4/5私の唯一のオプションですか?はいの場合、ドキュメンテーションはかなり威圧的だと思います。私のユースケースに十分に近く、おそらく適応できる例/チュートリアルはありますか? (たとえば、新しいキーワードを導入する構文拡張は関連性がないようです)。ありがとう!

4

2 に答える 2

4

解析を行う関数を呼び出したい場合は、 を使用ocamlmktopしてパーサーを最上位に含めることができます。次に、 を使用してタイプのプリンターをインストールできます#install_printer。セッションは次のようになります。

# let x = parse ()
<< type your expression here >>
# x : type = <<formatted version>>

私は特殊なプリンターを使用してきましたが、それらは複雑なタイプで非常に役立ちます。を使いこなしたことはありませんocamlmktop。私は常に and を使用してコードをロードし#loadます#use

これは、camlp4/5 (IMHO) を習得するよりもはるかに簡単です。でもちょっと大袈裟すぎるかな。

于 2012-07-15T17:39:38.503 に答える
3

はい、camlp4 を使用することができ、(トップレベルを含めて) かなりうまく動作しますが、いいえ、十分に文書化されておらず、それに対処する必要があります。

ユースケースに近い例については、Camlp4 wikiのラムダ計算の引用例を参照してください。

トップレベルの場合、簡単に機能します。"camlp4o.cmo" を動的にロードし、次に構文拡張をトップレベルにロードするか、それを処理するfindlibを使用できます: トップレベルから、、#use "topfind";;次には、拡張をデプロイするために作成した findlib パッケージの名前です。#camlp4o;;#require "myfoo.syntax";;myfoo.syntax

于 2012-07-15T23:52:11.610 に答える