2

より多くのキーワードで ocammlex を動作させる方法はありますか? 私はドイツ語用のインタープリターとパーサーを作成しました。これは、言語分析のためにドイツ語のテキストをラテックス画像に「コンパイル」します。それは本当にうまく機能し、言語学の世界では本当に新しいものです。ocamllex や menhir などのツールをそのような目的で悪用できることを、ocaml のすべての開発者に感謝します。しかし、すぐに辞書のサイズによる ocammlex-automaton の限界に到達します。

私はハッシュテーブルの解決策を知っています。それが今後の問題を解決するかどうかはまだ試していませんが、ocamllex-source-codeの制限整数などのタイプを簡単に変更できる場合、プログラムコードを変更せずに誤用できることを誰かが知っていますか? ? 私の意見では、自動化のサイズに関するこのエラーは不必要にばかげており、さらに悪用するには扱いにくいので、質問したいと思います。

ありがとう、良い一日を。

4

1 に答える 1

3

ツールを悪用するあなたの粘り強さに拍手を送ります :-)

ocamllex のソースを調べたところ、オートマトンが大きくなりすぎていないかどうかをチェックしている場所が 1 か所だけ見つかりました。

lexgen.ml780行付近

let do_alloc_cell used t =
  let available =
    try Hashtbl.find tag_cells t with Not_found -> Ints.empty in
  try
    Ints.choose (Ints.diff available used)
  with
  | Not_found ->
      temp_pending := false ;
      let n = !next_mem_cell in
      if n >= 255 then raise Memory_overflow ;
      Hashtbl.replace tag_cells t (Ints.add n available) ;
      incr next_mem_cell ;
      n

255 との不思議な比較があり、不変条件などを説明するコメントはありません。コードを簡単に調べ、Lexing モジュールも調べました。値 255 に明白でない依存関係は見当たりません。したがって、ここでより大きな値を使用して、独自の ocamllex のコピーを作成できる可能性があります。1023 (2 のべき乗よりも 1 少ない) を試すことができます。

また、分解して別のツールを使用することもできます。これはおそらく他の人があなたに言っていることだと思います。私が言うように、私はあなたの粘り強さに感心します。

于 2014-07-15T17:53:18.653 に答える