拡張された解析機能を備えたライブラリを実装しようとしています。大学で知っていたので、fsyaccを使うことにしました。残念ながら、次の問題が発生しました。
文法の先頭(Head)のクラスを定義し、その実装を1つのファイルに配置しました。次に、パーサーを次のように定義しました。
...
%start head
%type <Head> head
...
Fsyaccは、分離されたモジュール(パーサー)を生成します。成功するには、次の順序でコンパイルする必要があります。Head.fs
Parser.fs
このライブラリを.NETにあるものと同様にするために、静的な解析メソッドをHeadに追加したいと思います。残念ながら、Parserモジュールのメソッドを使用する必要があります。
このような型の依存関係は'および'演算子で解決できることは知っていますが、1つのファイルで定義された型にのみ適用できます。
別々のファイルにある場合でも、相互に依存する型を作成する他の方法はありますか?C / C ++のような宣言/実装分離メカニズムを探していましたが、何も見つかりませんでした。