理論によると、lex ツール (私は ocamllex を読みました) について、正規表現のコレクションを DFA (実際には NFA と NFA2DFA) の C (OCaml) コードに変換します。DFA M の正式な定義は、5 つのタプル M = {Q, Sigma, transition_function, q0, F} です。生成されたファイルで見つけたのは次のとおりです。
- Lexing モジュールのフィールドを持つ __ocaml_lex_tables というレコード
- 再帰関数
DFA のオブジェクト/構造と ocamllex によって生成された構造の間にマッピングがありますか? 私はそれを「見る」ことができません....また、助けを求めてグーグルで検索しましたが、役立つ例は見つかりませんでした。
ocamllex ツールからの回答は、DFA コンテキスト(7 ステート、279 トランジション、テーブル サイズ 1158 バイトなど)で意味があります。
状態遷移表ですか?それを「読む」方法は?リンク/ヒントをありがとう!